[英]Pug string interpolation for linked JavaScript files
我有一个NodeJS网络服务器,该服务器使用Express和Pug提供HTML和JavaScript文件。 看起来像这样:
html
head
title Hello
body
h1 Hello World!
script(src='script.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);
var person = {
age: #{age},
name: #{name}
};
(源自并添加到GitHub示例中 )
我希望能够将#{age}
和#{name}
占位符交换为res.render()
函数中指定的值(即{age: 91, name: 'George P. Burdell'}
)。
截至目前,这些值尚未交换,控制台吐出一个错误,指示无法识别带有占位符#{age}
和#{name}
的行。 仅当将script.js中的JavaScript代码作为内部脚本带入.pug文件时,才交换占位符值,如下所示:
html
head
title Hello
body
h1 Hello World!
script.
var person = {
age: #{age},
name: #{name}
};
但是我想要做的是直接从外部脚本文件交换值,例如在初始设置中。 除了将代码“实时”保存在.pug文件中之外,我还没有找到一种简单的方法来运气。
所以我有一个解决方法。 您可以在.pug文件的内部脚本标记中设置全局变量,然后可以使用pug对其进行插值。 作为视觉效果,这就是我的意思:
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
};
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.