📢 HMPL v3.1:全新重大更新!
我们终于完成了期待已久的更新之一,这使我们离打造世界上最好的 HATEOAS 应用创建工具之一又近了一步(我们希望如此)!
我们用它做了很多有趣的事情。由于该项目已经有一段时间没有进行代码更新了,这次更新犹如一股清流,将大大提升其可用性。
今天,我们将主要讨论应用程序安全、应用程序更新等话题。那么,让我们开始吧!
🔏 提升安全性
在使用超媒体时,与其他工具不同,我们特别注重从服务器接收数据的安全性。因此,我们的解决方案之一是集成DOMPurify,它可以清除传入 HTML 中潜在的危险标记。
<!--
Response before:
<script></script>
<div>My component</div>
-->
<div>
{{#request
src="/api/get-my-component"
sanitize=true
}}{{/request}}
</div>
<!--
Response afer:
<div>My component</div>
-->
然而,默认的清理机制会带来一个问题:应用程序的行为相当可预测,虽然通常很安全,但缺乏灵活性。因此,我们引入了该sanitizeConfig属性。
/**
Response before:
<div></div><math></math>
*/
const templateFn = compile("...",{
sanitize: true,
sanitizeConfig: { USE_PROFILES: { html: true } }
});
/**
Response after:
<div></div>
*/
它基于ConfigDOMPurify,例如,可以阻止应用程序中使用 MathML,以及进行许多其他自定义设置。这使得该工具功能非常全面,即使是最奇特的响应,它也能按照开发者最初的预期进行处理,无需任何样板代码。
该属性已添加到compile块助手,并且不打算将其移动到块助手。
⚙️ 更改 get 函数的参数
在我看来,这是最具争议性的改动之一,也是我们考虑了很久的问题。乍一看,如果参数超过两个,属性就应该立即转换为对象,但事实证明这很难做到。
前:
const elementObj = templateFn({
get: (prop, value, context, request) => {
...
}
});
后:
const elementObj = templateFn({
get: ({ prop, value, context, request }) => {
...
}
});
看起来你几乎总是只用到两个参数get,但如果我们沿用相同的上下文,就必须将参数表示为数组并通过索引访问它们。或者,我们可以指定未使用的变量名,但这样代码检查工具就不允许了,所以我们认为我们目前实现的方法更好。
我们只想知道您的意见,我们这样做对吗?
💬 反馈
您可以在评论区写下您对新功能的看法,我很期待看到大家的留言!或者,您也可以加入一个专门用于提问和提出建议的Discord频道,我和其他成员会在那里尽力解答!
✅ 本项目是开源的
所以你也可以参与其中!这也意味着你可以将其用于商业用途:
代码仓库:https://github.com/hmpl-language/hmpl(请给我们点赞★)
网站:https://hmpl-lang.dev
完整变更列表:https://hmpl-lang.dev/changelog
非常感谢您阅读这篇文章!
文章来源:https://dev.to/hmpljs/hmpl-v31-new-major-update-124p

