使用express 4时我很困惑。我使用 express-generator 来生成我的项目。根目录中有 app.js ,路由器文件中有 index.js 。但是,关于快递的互联网教程正在 app.js 中直接使用路由器。因此,当我想在 index.js (在路由器文件中)中设置一些变量时,我使用app.locals,但它不起作用。但是当我改为另外两个时,我的ejs模板起作用......我很困惑。有人可以告诉我它们之间的区别以及如何正确使用吗?
<xsl:template match="para">
<xsl:copy>
<xsl:value-of select="replace(.,',(\S)',', $1')"/>
</xsl:copy>
</xsl:template>
答案 0 :(得分:18)
app.locals
对象是一个JavaScript对象,其属性是应用程序中的局部变量。
app.locals.title
// => 'My App'
app.locals.email
// => 'me@myapp.com'
设置后,app.locals
属性的值在应用程序的整个生命周期中都会持续
与仅在请求生命周期内有效的res.locals
属性形成对比。当您处理拥有res
对象的路线时,您不会在那里拥有应用对象,反之亦然app.locals
。
您可以访问应用程序中呈现的模板中的局部变量。这对于为模板提供辅助函数以及应用程序级数据非常有用。通过req.app.locals
(参见req.app)
app.locals.title = 'My App';
app.locals.strftime = require('strftime');
app.locals.email = 'me@myapp.com';
Node.js In Action
本书中的一张图片如下所示,描述app.local
和res.local
的差异
答案 1 :(得分:3)
简而言之。
<强> app.locals 强>
app.locals
对象是一个JavaScript对象,其属性是应用程序中的局部变量。
这意味着您可以在app.js
中使用locals
声明变量,并在该脚本中访问该变量或将其传递给response object
。
<强> res.locals 强>
使用此功能,您可以将变量设置或发送到客户端html / view,并且只能在该视图/ html中使用。
e.g。
app.get('/view', function(req, res) {
res.locals.user = req.user;
});
此处{h}页面中提供user
变量,请求view
路线。
<强> req.app.locals 强>
通过req.app.locals
;