首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Express / Node.JS创建可在所有视图中访问的全局变量?

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

Stack Overflow用户
提问于 2013-05-09 07:52:05
回答 5查看 108.8K关注 0票数 83

好了,我已经使用Jekyll构建了一个博客,您可以在文件_config.yml中定义变量,这些变量可以在所有模板/布局中访问。我目前正在使用带有EJS模板和ejs-localsNode.JS / Express (用于部分/布局。我希望做一些类似于在_config.yml中找到的全局变量,如site.title,如果有人熟悉Jekyll。我有一些变量,比如网站的标题,(而不是页面标题),作者/公司名称,这些变量在我所有的页面上都是一样的。

下面是我目前正在做的一个示例:

代码语言:javascript
复制
exports.index = function(req, res){
    res.render('index', { 
        siteTitle: 'My Website Title',
        pageTitle: 'The Root Splash Page',
        author: 'Cory Gross',
        description: 'My app description',
        indexSpecificData: someData
    });
};

exports.home = function (req, res) {
    res.render('home', {
        siteTitle: 'My Website Title',
        pageTitle: 'The Home Page',
        author: 'Cory Gross',
        description: 'My app description',
        homeSpecificData: someOtherData
    });
};

我希望能够在一个地方定义变量,如我网站的标题、描述、作者等,并通过EJS在我的布局/模板中访问它们,而不必将它们作为选项传递给每个调用res.render。有没有办法做到这一点,同时仍然允许我传入特定于每个页面的其他变量?

EN

回答 5

Stack Overflow用户

发布于 2016-03-18 13:08:17

对于Express4.0,我发现使用应用程序级变量的工作方式略有不同&Cory的答案对我不起作用。

来自文档:http://expressjs.com/en/api.html#app.locals

我发现你可以在下面的代码中声明一个全局变量

代码语言:javascript
复制
app.locals

e.g

代码语言:javascript
复制
app.locals.baseUrl = "http://www.google.com"

然后,您可以在应用程序中访问这些变量&在express中间件中,您可以在请求对象中访问它们,如下所示

代码语言:javascript
复制
req.app.locals.baseUrl

例如:

代码语言:javascript
复制
console.log(req.app.locals.baseUrl)
//prints out http://www.google.com
票数 19
EN

Stack Overflow用户

发布于 2013-09-21 04:46:02

在您的app.js中,您需要添加如下内容

代码语言:javascript
复制
global.myvar = 100;

现在,在您想要使用此变量的所有文件中,您只需以myvar的身份访问它

票数 15
EN

Stack Overflow用户

发布于 2016-10-21 16:02:48

您也可以使用"global“

示例:

像这样声明:

代码语言:javascript
复制
  app.use(function(req,res,next){
      global.site_url = req.headers.host;   // hostname = 'localhost:8080'
      next();
   });

使用方法如下:在任何视图或ejs文件中<% console.log(site_url);%>

在js文件中console.log(site_url);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16452123

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档