我一直在尋找一個JavaScript模板引擎,並選擇DoT.js(主要是因爲它是非常fast),但有以下問題是否有JavaScript HTML模板支持null-coalescing(「undefined」safe)並保護XSS?
空安全/未定義安全/空凝聚,就像在Freemarker的/ VTL,我希望能夠通過foo.bar.foobar,而不用擔心檢查foo,foo.bar和foo.bar.foobar,它們被定義爲
eg避免像{{ 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模板庫回答這兩個要求,並且仍然被認爲是快?
RE 2),HTML轉義體面第一步,但並不妨礙對XSS。例如,注入'javascript:doEvil()'到鏈接的'href'中將不會被默認設置阻止。 – 2012-03-31 22:31:11