我有一个带有快捷键的nodejs应用程序,我想为诸如CSS和Javascript的“主机”地址这样的东西定义变量,这些地址目前正在被导入到一个header.hbs文件中,我在特定的布局中调用了这个文件。
我创建了一个config.js文件,其中包含许多我希望设置的变量,并使用以下方法将其导入到app.js中:
var config = require('./config.js');
但后来我迷失了方向。例如,我在想,如果我能做一些这样的事情:
<link href="{{config.csshost}}basev1.css" rel="stylesheet" type="text/css" />
除了每次加载模板时都声明这些变量之外,其他人还能提供一些指针吗?
发布于 2015-02-19 17:08:59
您可以设置应用程序局部变量:
var app = express()
app.locals = {
config: config,
templateVar: 'test'
}
编辑:
你的路线会是这样的:
app.get('/', function(req, res) {
res.render('index', {config: config});
})
然后,在express中更新app.locals变量如下所示:
app.locals = {
config: config
}
然后,可以通过以下方式在模板中访问所有app.local变量:
{{config}}
//which is really
app.locals['config']
因此,在配置express的app.js中,您可以这样做:
var app = express();
app.locals.config = require('./config')
app.get('/', function(req, res) {
return res.render('index')
})
发布于 2015-07-04 22:06:41
(这应该是上面sctskw's answer的一个评论,但我没有足够的声誉去这么做。)
与其用新对象覆盖app.locals
,不如将新属性添加到现有属性中,如下所示:
app.locals.config = config;
app.locals.templateVar = 'test';
原因是Express在内部使用app.locals
。覆盖它将失去Express提供的一些有用的变量。例如,我们可以使用settings.env
来检测视图模板中当前运行的环境,该模板由Express定义为app.locals.settings.env
。
https://stackoverflow.com/questions/28619582
复制