是否有一个模板引擎可以解析ES6 模板文字(例如"string ${var}"
)样式的模板,而不会违反脚本评估的内容安全策略 (CSP) 限制?
CSP 对脚本评估的限制阻止eval
限制、new Function
和.setTimeout(string)
setInterval(string)
有许多模板引擎可以提供或修改以提供类似 ES6 样式的模板文字,例如 John Resig 的MicroTemplates、 lodash _.template 和DoT.js。然而,所有似乎都违反了 CSP 使用new Function
.
如果var
可以是不受限制的 Javascript,在某些方面会很方便,但由于明显的原因,这可能是不可能的。但是,我需要能够修改引擎以根据需要格式化输出。
在这种情况下,性能不是问题,并且预编译模板不是一种选择。其他人有讨论了预编译。
作为附加限制,内容是文本,而不是 HTML。因此,我认为 Knockout 或 PURE 等面向 DOM 的模板引擎不会有效地工作。
我的第一个想法是从mustache.js开始并从那里修改它(即更改mustache.tags = ['${', '}']
或DIY 解决方案,但我会很感激有关该主题的任何想法,因为似乎很少有关于 CSP 和模板的讨论.