javascript - 如何将变量传递给 Pug 的 `script.` block ?

标签 javascript node.js express pug

我的 index.pug 文件中有这段代码

doctype html
html
  head
    title= title
  body
    script(src=`${source}`)
    script.
      for (var event of events){
        VClient.Event.subscribe(event, createDiv);
      } 

下面是我如何将变量从 Express 传递给 pug。

var express = require('express');
var app = express();
app.set('view engine', 'pug')

app.get('/', function(req, res){
    var id = req.query.id || 23717;
    var source = `https://some.source.url/${id}.js`;
    res.render('index',
    {title: 'Preview Embed', source: source, events:["AD_START","AD_COMPLETE"]});
});
app.listen(5000);

titlesource 都进入了 pug 文件。但不是事件:

Uncaught ReferenceError: events is not defined

如何在 script. block 中正确传递变量?

最佳答案

您基本上需要以最终结果作为有效 JS 进行插值的方式呈现您的变量。可以通过以下方式完成:!{JSON.stringify(events)}

for (var event of !{JSON.stringify(events)}) ...

应该扩展为:

for (var event of ["AD_START","AD_COMPLETE"]) ...

请注意 unescaped interpolation!{} ,与更频繁使用的 #{} 相反,在这种情况下,它不起作用,因为它会扩展为类似 ["..."] 的内容(即转义引号)

警告:未转义的代码可能很危险。您必须确保清理所有用户输入以避免跨站点脚本 (XSS)。请参阅:How to pass variable from jade template file to a script file?

关于javascript - 如何将变量传递给 Pug 的 `script.` block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49238052/

相关文章:

javascript - 如何在点击时旋转箭头?

javascript - 为什么我的网站上出现引用错误和语法错误?

javascript - 如何在同一个html页面中制作后退按钮

Node.js 和 Express : No answer if server is running

javascript - 带有 ES6 模板字符串的 MongoDB 对象键

javascript - Node.JS:如何将变量传递给异步回调?

javascript - Nodejs快速路由: no styling if "/" is added

javascript - NodeJS 模块函数约定——调用自己的函数

mysql - 通过 native 连接远程mysql : node expressjs

node.js - 在 express 框架中的 session 中出现奇怪的错误