好了,我已经使用Jekyll构建了一个博客,您可以在文件_config.yml
中定义变量,这些变量可以在所有模板/布局中访问。我目前正在使用带有EJS模板和ejs-locals的Node.JS / Express (用于部分/布局。我希望做一些类似于在_config.yml
中找到的全局变量,如site.title
,如果有人熟悉Jekyll。我有一些变量,比如网站的标题,(而不是页面标题),作者/公司名称,这些变量在我所有的页面上都是一样的。
下面是我目前正在做的一个示例:
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
。有没有办法做到这一点,同时仍然允许我传入特定于每个页面的其他变量?
发布于 2016-03-18 13:08:17
对于Express4.0,我发现使用应用程序级变量的工作方式略有不同&Cory的答案对我不起作用。
来自文档:http://expressjs.com/en/api.html#app.locals
我发现你可以在下面的代码中声明一个全局变量
app.locals
e.g
app.locals.baseUrl = "http://www.google.com"
然后,您可以在应用程序中访问这些变量&在express中间件中,您可以在请求对象中访问它们,如下所示
req.app.locals.baseUrl
例如:
console.log(req.app.locals.baseUrl)
//prints out http://www.google.com
发布于 2013-09-21 04:46:02
在您的app.js中,您需要添加如下内容
global.myvar = 100;
现在,在您想要使用此变量的所有文件中,您只需以myvar
的身份访问它
发布于 2016-10-21 16:02:48
您也可以使用"global“
示例:
像这样声明:
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);
https://stackoverflow.com/questions/16452123
复制相似问题