有没有一个JavaScriptHTML模板既支持null合并(“未定义”安全),又能防止XSS
Is there a JavaScript HTML template that supports both null-coalescing ("undefined" safe) and protects from XSS?
我正在寻找一个JavaScript模板引擎,并选择了DoT.js(主要是因为它非常快),但遇到了以下问题
-
空安全/未定义的安全/空合并,就像在Freemark/VTL中一样,我希望能够传递foo.bar.foobar,而不必担心检查foo、foo.bar和foo.bar.foobar是否已定义
例如,避免之类的事情{{ var val='';try{ var=foo.bar.foobar }catch(){} }}{{= val}}
我感觉很糟糕,或者
{{= typeof foo !== 'undefined'?typeof foo.bar!=='undefined'?typeof foo.bar.foobar!=='undefined'?foo.bar.foobar:'foo.bar.foobar is undefined':'foo.bar is undefined':'foo is undefined'}}
我不确定我对的感觉是好是坏
-
我希望有良好的XSS保护,由于DoT.js不使用DOM,即使使用{{!}}运算符也很快,我对世界上所有的XSS都将由查找和替换(例如,如果作者遗漏了什么)处理感到不舒服
文档虽然它很快,但还没有那么受欢迎,但来源很小,你只需阅读它们就可以了解大多数内容,但拥有一个好的社区是的一大好处
哪个JavaScript模板库满足了这两个要求,并且仍然被认为是快速的?
https://github.com/mikesamuel/jquery-jquery-tmpl-proposal可以很好地与其他模板系统进行基准测试,并具有上下文自动转义功能以防止XSS。
您可以从一致性套件中看到,它合并了undefined
。
splash.js-带有JavaScript的无逻辑{{splash}}模板。
1)如果键存在,并且其值为null、undefined或false,或者是空列表,则不会渲染块。
2)默认情况下,所有变量都是HTML转义的。如果您想呈现无标题的HTML,请使用三个小胡子:{{name}}。您也可以使用&取消捕捉变量。
参考:https://github.com/janl/mustache.js
- 为什么“;未定义的“;在JavaScript中结束循环
- 要求未定义JS回调参数
- 如何检查管道中未定义的项目
- TypeError:无法读取属性'推'未定义的JavaScript
- $window.ga在AngularJS事件中未定义
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 无法获取属性'selectedIndex'的未定义引用或null引用
- 如何消除代码中的未定义和其他问题
- 未捕获的ReferenceError:$未定义
- this.router在AngularJS 2中未定义
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 节点fs.stat名称未定义
- 尝试在PHP中回显输入文本时出现未定义的索引错误
- Jquery未定义函数正在停止其他操作
- AngularJS指令出错-无法读取属性'编译'的未定义
- 这.SOMETHING 总是返回未定义的 - extjs
- 无法获取属性'Id'使用Knockout.js的未定义或空引用API
- 有没有一个JavaScriptHTML模板既支持null合并(“未定义”安全),又能防止XSS
- 用于检查字符串相等性的Javascript库,该库对于未定义的变量是安全的