【问题标题】:Pug string interpolation for linked JavaScript files用于链接 JavaScript 文件的 Pug 字符串插值
【发布时间】:2018-05-16 10:47:15
【问题描述】:

我要做什么

我有一个 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 example

我希望能够将#{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 文件中之外,我没有找到一种简单的方法来做到这一点。

【问题讨论】:

    标签: javascript node.js express pug


    【解决方案1】:

    所以我有一个解决方法。您可以做的是在 .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'"
    });
    

    交换后保持数据类型!

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 2020-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多