您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

将变量传递给ExpressJS中的JavaScript

将变量传递给ExpressJS中的JavaScript

您可以使用此(客户端):

<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>
javascript 2022/1/1 18:14:46 有428人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶