为了进行动态包含,您将不得不使用未转义字符串插值,将在您的主 .pug 文件之前预编译的 pug 内容插入到您的路线中。换句话说,它的工作原理如下:
1) 一些 .pug 文件被预编译成 HTML 2) HTML 被送入另一个 .pug 文件编译过程
这是一个如何做的例子
在您的路由器文件中(routes.js 或其他)
var pug = require('pug')
var html = []
var files = ['file1','file2'] // file names in your views folders
let dir = path.resolve(path.dirname(require.main.filename) + `/app/server/views/`)
//dir is the folder with your templates
app.get('/some-route', (req,res) => {
for (let n = 0; n < files.length; n++) {
let file = path.resolve(dir + '/' + files[n] + `.pug`)
fs.access(file, fs.constants.F_OK, (err) => {
if (!err) {
html.push(pug.renderFile(file, data))
if (n === files.length - 1) {
res.render('dashboard', {html})
}
}
else {
res.status(500).json({code:500,status:"error", error:"system-error"})
}
})
}
})
在您想要的 .pug 文件中:
for item in html
.
!{item}
上面的例子是针对我自己的用例的,但它应该很容易适应它。