您可以使用此(客户端):
<script>
var myVar = <%- JSON.stringify(myVar) %>;
</script>
您还可以使用EJS渲染.js
文件:
app.get('/test.js', function(req, res) {
res.set('Content-Type', 'application/javascript');
res.render('testPage', { myVar : ... });
});
但是,模板文件(testPage
)仍需要具有.html
扩展名,否则EJS将找不到它(除非您另行告诉Express)。
正如@ksloan在评论中指出的那样:您必须小心myVar
包含的内容。如果其中包含用户生成的内容,则可能会使您的网站保持打开状态,以进行脚本注入攻击。
防止发生这种情况的可能解决方案:
<script>
function htmlDecode(input){
var e = document.createElement('div');
e.innerHTML = input;
return e.childNodes.length === 0 ? "" : e.childNodes[0].nodeValue;
}
var myVar = JSON.parse(htmlDecode("<%= JSON.stringify(myVar) %>"));
</script>