我一直在寻找一个JavaScript模板引擎,并选择了DoT.js(主要是因为它非常fast)但是有以下问题
Null safe / Undefined safe / null-coalescing ,就像在Freemarker / 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模板库满足了这两个要求,并且仍然被认为是快速的?
答案 0 :(得分:2)
https://github.com/mikesamuel/jquery-jquery-tmpl-proposal benchmarks与其他模板系统相比,并contextual autoescaping阻止XSS。
您可以从conformance suite看到它合并undefined
。
答案 1 :(得分:1)
mustache.js - 使用JavaScript的无逻辑{{mustache}}模板。
1) 如果密钥存在且值为null,undefined或false,或者是空列表,则不会呈现该块。
2) 默认情况下,所有变量都是HTML转义的。如果要渲染未转义的HTML,请使用三重胡须:{{{name}}}。你也可以用&取消变量。