在 Express 中呈现模板时,Pug 是否可以访问任何服务器端 functions/variables?
Does Pug have access to any server-side functions/variables when rendering a template in Express?
假设我在我的应用程序中定义了一个变量,我想在我的 Pug 模板中使用该变量。如果我不在 render 语句中传递这个变量,Pug 是否可以访问它?
我有一个变量,它的值会周期性地改变,它应该在我网站的几乎每个页面上都可见。它应该从中可见的每个页面都将扩展相同的模板,因此如果我能以某种方式从该模板内部访问该变量,我只需要在一个地方编写代码。我知道我可以将变量包含在 res.render('template', { ... })
的 locals
部分中,但这似乎不是一个实用的解决方案,因为我可以在未来添加新路线。有人知道我如何以最简洁、最易读的方式实现这一目标吗?
我在 tbhaxor 找到了一个答案 here,发帖以防将来有人无意中发现这个问题。
在一些 helper.js
文件中定义您的 variables/functions 并导出它们。然后在您的 index.js
文件中要求该文件,例如const helper = require('./helper.js`);
所以你现在可以使用:
app.locals.SOME_NAME = helper.someFunctionOrVariable
可以通过调用 - const result = SOME_NAME();
在您的模板中访问
希望这对其他人有帮助,感谢 tbhaxor。
假设我在我的应用程序中定义了一个变量,我想在我的 Pug 模板中使用该变量。如果我不在 render 语句中传递这个变量,Pug 是否可以访问它?
我有一个变量,它的值会周期性地改变,它应该在我网站的几乎每个页面上都可见。它应该从中可见的每个页面都将扩展相同的模板,因此如果我能以某种方式从该模板内部访问该变量,我只需要在一个地方编写代码。我知道我可以将变量包含在 res.render('template', { ... })
的 locals
部分中,但这似乎不是一个实用的解决方案,因为我可以在未来添加新路线。有人知道我如何以最简洁、最易读的方式实现这一目标吗?
我在 tbhaxor 找到了一个答案 here,发帖以防将来有人无意中发现这个问题。
在一些 helper.js
文件中定义您的 variables/functions 并导出它们。然后在您的 index.js
文件中要求该文件,例如const helper = require('./helper.js`);
所以你现在可以使用:
app.locals.SOME_NAME = helper.someFunctionOrVariable
可以通过调用 - const result = SOME_NAME();
希望这对其他人有帮助,感谢 tbhaxor。