我正在学习Express --并且正在考虑保存配置样式数据的最佳位置。可用选项有app.locals或app.set (设置)...所以:
app.locals({ config: {
name: 'My App',
domain: 'myapp.com',
viewPath: __dirname+'/views',
viewEngine: 'jade'
port: 3000
} });
app.set('view engine', app.locals.config.viewEngine || 'jade');
这也允许我在我的视图中使用以下内容:
<title>#{config.name}</title> // <title>My App</title>
或者,也可以像这样使用app.set:
app.set('name', 'My App');
app.set('domain', 'myapp.com');
..。然后在视图中使用以下代码:
<title>#{settings.name}</title>
我知道这两种方法都有效,但我正在努力确定哪种方法更好。目前,我倾向于使用app.locals,带有额外的'app‘命名空间,因为我相信如果使用app.set,与未来的更新和其他模块发生冲突的可能性会更小。
发布于 2014-08-27 23:50:12
app.locals
的所有属性都可以在模板中找到。使用app.set
将属性分配给app.locals.settings
,该属性用于全局应用程序设置,并由已装载的应用程序继承。例如:
var app1 = express(),
app2 = express();
app1.set('inheritable', 'foo');
app1.locals.notInheritable = 'bar';
app1.use('/mount', app2);
app2.get('inheritable') === 'foo'; // true
app2.locals.notInheritable === 'bar'; // false
因此,这实际上是一个偏好的问题,以及您是否要安装应用程序。
发布于 2012-08-09 23:04:51
很多人确实使用本地变量而不是app.set,所以我的建议是使用它。
https://stackoverflow.com/questions/11885562
复制相似问题