是否有一個模板引擎能夠在不違反內容安全策略(CSP)限制腳本評估的情況下分析ES6 template literals(例如"string ${var}"
)風格的模板?CSP安全ES6模板文字
該CSP restrictions on script evaluation阻止eval
,new Function
, setTimeout(string)
和setInterval(string)
。
有許多模板引擎可以提供或修改以提供類似ES6樣式的模板文字,如John Resig的MicroTemplates,lodash _.template和DoT.js。然而,所有這些似乎都通過使用new Function
來違反CSP。
在某些方面,如果var
可能是不受限制的Javascript,但由於顯而易見的原因,這可能是不可能的。不過,我需要能夠修改引擎以根據需要格式化輸出。
在這種情況下,性能不是問題,預編譯模板不是一種選擇。其他人有discussed pre-compilation。
作爲額外的限制,內容是文本 - 而不是HTML。因此,我不認爲像Knockout或PURE這樣的面向DOM的模板引擎無法有效地工作。
我首先想到的是開始mustache.js,並從那裏修改(即改變mustache.tags = ['${', '}']
或DIY solution,但似乎有相當的CSP的討論缺乏,我會在一般的話題有什麼想法感激和模板。
「在這種情況下的表現是不是一個問題」 - 用與string.replace回調呢?回調可以像'return vars [key];'一樣簡單。 –
我想這是值得一提的ES6模板是CSP安全的(但請注意,他們確實將網站暴露給腳本)。 –
你是什麼意思「*方便如果'var'可以不受限制Javascript *」'? – Bergi