繁体   English   中英

链接的JavaScript文件的帕格字符串插值

[英]Pug string interpolation for linked JavaScript files

我要做什么

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

index.pug

html
    head
        title Hello
    body
        h1 Hello World!
        script(src='script.js')

app.js

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);

script.js

var person = {
    age: #{age},
    name: #{name}
};

(源自并添加到GitHub示例中

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

问题

截至目前,这些值尚未交换,控制台吐出一个错误,指示无法识别带有占位符#{age}#{name}的行。 仅当将script.js中的JavaScript代码作为内部脚本带入.pug文件时,才交换占位符值,如下所示:

index.pug

html
    head
        title Hello
    body
        h1 Hello World!
        script.
            var person = {
                age: #{age},
                name: #{name}
            };

但是我想要做的是直接从外部脚本文件交换值,例如在初始设置中。 除了将代码“实时”保存在.pug文件中之外,我还没有找到一种简单的方法来运气。

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

index.pug

html
    head
        title Hello
    body
        h1 Hello World!
        script.
            var age = #{age};
            var name = #{name};
        script(src='script.js')

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
};

app.js保持不变!

编辑

app.js

res.render("index", {
    age: 91,
    name: 'George P. Burdell'
});

应该

res.render("index", {
    age: "91",
    name: "'George P. Burdell'"
});

交换后保持数据类型!

如果有更好的解决方法,请告诉我! 目前,这是公认的答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM