链接JavaScript文件的Pug字符串插值 我想做什么

链接JavaScript文件的Pug字符串插值 我想做什么,javascript,node.js,express,pug,Javascript,Node.js,Express,Pug,我有一个NodeJS Web服务器,它使用和提供HTML和JavaScript文件。它看起来像这样: 哈巴狗 app.js script.js (摘自并添加到) 我希望能够将{age}和{name}占位符与res.render()函数中指示的值交换(即{age:91,name:'George p.Burdell}) 问题 到目前为止,这些值还没有交换,控制台会抛出一个错误,指出带有占位符{age}和{name}的行无法识别。仅当script.js中的JavaScript代码作为内部脚本引入.pu

我有一个NodeJS Web服务器,它使用和提供HTML和JavaScript文件。它看起来像这样:

哈巴狗 app.js script.js (摘自并添加到)

我希望能够将
{age}
{name}
占位符与
res.render()
函数中指示的值交换(即
{age:91,name:'George p.Burdell}

问题 到目前为止,这些值还没有交换,控制台会抛出一个错误,指出带有占位符
{age}
{name}
的行无法识别。仅当script.js中的JavaScript代码作为内部脚本引入.pug文件时,才会交换占位符值,如下所示:

哈巴狗
但我希望能够直接从外部脚本文件(如初始设置中)交换值。除了将代码“live”放在.pug文件中之外,我还没有找到一个简单的方法来实现这一点。

因此我有一个解决方法。您可以做的是在.pug文件的内部脚本标记中设置全局变量,然后可以使用pug对其进行插值。作为一种视觉效果,我的意思是:

哈巴狗 script.js app.js保持不变

编辑 app.js 应该是

res.render("index", {
    age: "91",
    name: "'George P. Burdell'"
});
在交换后保留数据类型

请让我知道是否有更好的方法来解决这个问题!目前,这是公认的答案

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

app.get("/", (req, res) => {
    res.render("index", {
        age: 91,
        name: 'George P. Burdell'
    });
});
app.listen(8080);
var person = {
    age: #{age},
    name: #{name}
};
html
    head
        title Hello
    body
        h1 Hello World!
        script.
            var person = {
                age: #{age},
                name: #{name}
            };
html
    head
        title Hello
    body
        h1 Hello World!
        script.
            var age = #{age};
            var name = #{name};
        script(src='script.js')
var person = {
    age: age, // the age variable from the internal script is used
    name: name // the name variable from the internal script is used
};
res.render("index", {
    age: 91,
    name: 'George P. Burdell'
});
res.render("index", {
    age: "91",
    name: "'George P. Burdell'"
});