栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Express / Node.JS创建可在所有视图中访问的全局变量?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Express / Node.JS创建可在所有视图中访问的全局变量?

在有机会学习 Express 3 API Reference
之后,我发现了我想要的东西。具体来说,关于条目的内容

app.locals
,然后再往下一点,
res.locals
保存了我需要的答案。

我自己发现该函数

app.locals
接受一个对象并将其所有属性存储为作用于应用程序的全局变量。这些全局变量作为局部变量传递给每个视图。
res.locals
但是,该函数的作用域是请求,因此,响应局部变量仅可用于在特定请求/响应过程中呈现的视图。

所以对于我来说,我

app.js
所做的就是添加:

app.locals({    site: {        title: 'ExpressBootstrapEJS',        description: 'A boilerplate for a simple web application with a Node.JS and Express backend, with an EJS template with using Twitter Bootstrap.'    },    author: {        name: 'Cory Gross',        contact: 'CoryG89@gmail.com'    }});

然后,所有这些变量都在我的意见,访问

site.title
site.description
author.name
author.contact

我还可以使用定义每个请求响应的局部变量

res.locals
,或者简单地将诸如页面标题之类的变量作为调用中的
options
参数传递
render

编辑: 此方法将 不会
让你在你的中间件使用这些本地人。实际上,正如Pickels在下面的评论中建议的那样,我确实碰到了这一点。在这种情况下,您将需要在他的替代(和赞赏的)答案中创建一个中间件功能。您的中间件功能需要

res.locals
为每个响应将它们添加到中,然后调用
next
。该中间件功能将需要放在需要使用这些本地语言的任何其他中间件之上。

编辑:
通过

app.locals
和声明局部变量之间的另一个区别
res.locals
是,
app.locals
变量被设置为单个时间,并在应用程序的整个生命周期中持续存在。
res.locals
在中间件中设置本地人时,每次收到请求时都会进行设置。基本上,您应该更喜欢通过设置全局变量,
app.locals
除非该值取决于
req
传递给中间件的请求变量。如果该值未更改,则只需将其设置一次将更加有效
app.locals



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/469090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号