通常,通过声明app.locals
变量,如下所示,我可以在jade模板中使用该变量。
// app.js
var express = require('express');
var app = express();
app.locals.varName = 'blah blah'
我希望将app.local.varName
移动到外部文件(即:vars.js),然后将它们导入app.js中以供使用。我熟悉export module / require系统,但我不知道如何使变量变为“活动”以供使用。这是我到目前为止所得到的:
// vars.js
module.exports = {
all : {
var express = require('express');
var app = express();
app.locals.varName = 'blah blah'
}
}
然后导入回app.js:
// app.js
var variables = require('./vars');
var variables2 = variables.all()
variables2
但是,我的jade模板仍然无法识别varName
变量。
答案 0 :(得分:0)
导出中的all
似乎无效。但这应该很容易解决。这里的问题可能是因为本地人被添加到从all()
创建的单独应用程序中,而不是您在app.js中使用的应用程序。尝试修改你的代码(传递你的使用app
):
<强> app.js 强>
var express = require('express');
var app = express();
var variables = require('./vars');
variables.all(app)
console.log(app.locals);
<强> vars.js 强>
module.exports = {
all : function(app){
app.locals.varName = 'blah blah'
}
}
<强>输出强>
{ [Function: locals]
settings:
{ 'x-powered-by': true,
etag: true,
env: 'development',
'subdomain offset': 2,
view: [Function: View],
views: '/home/hadoop/views',
'jsonp callback name': 'callback',
'json spaces': 2 },
varName: 'blah blah' }
答案 1 :(得分:0)
在玩完之后,我想出了我在寻找的东西:
// vars.js
module.exports = {
all : function() {
var siteName = 'blah blah'
return siteName;
}
};
// app.js
var express = require('express');
var app = express();
app.locals.whateverName = require('./vars').all();
然后,在jade模板中,您只需调用=whateverName
即可获得等等输出。
答案 2 :(得分:0)
试试这个......
var app = express();
var variables = require('./vars')(app);
和
module.exports =function(app) {
app.locals.varName = 'blah blah'
}