lee*_*ell 20 javascript node.js express
我正在学习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');
Run Code Online (Sandbox Code Playgroud)
这也允许我在我的观点中使用以下内容:
<title>#{config.name}</title> // <title>My App</title>
Run Code Online (Sandbox Code Playgroud)
或者替代方法是使用app.set,如下所示:
app.set('name', 'My App');
app.set('domain', 'myapp.com');
Run Code Online (Sandbox Code Playgroud)
...然后在视图中使用它:
<title>#{settings.name}</title>
Run Code Online (Sandbox Code Playgroud)
我知道这两种方法都有效,但我很难确定哪种方法更好用.目前我倾向于使用app.locals,使用额外的'app'命名空间,因为我相信如果使用app.set,与未来更新和其他模块冲突的可能性会更小.
Eva*_*oll 13
哇,所有的答案都是错的,所以让我试一试.尽管其他人说app.local参数与使用app.set()不同.看,
app.js
app.locals.foo = 'bar';
app.set('baz', 'quz');
index.jade
block content
dl
dt app.locals.foo = 'bar';
dd \#{settings.foo} = #{settings.foo}
dd \#{foo} = #{foo}
dt app.set('baz', 'quz')
dd \#{settings.baz} = #{settings.baz}
dd \#{baz} = #{baz}
Run Code Online (Sandbox Code Playgroud)
如果您运行此代码,您会看到,
app.locals.foo = 'bar';
#{settings.foo} =
#{foo} = bar
app.set('baz', 'quz')
#{settings.baz} = quz
#{baz} =
Run Code Online (Sandbox Code Playgroud)
原因是设置app.locals视图用作其环境的对象的集合属性; 视图将在没有资格的情况下阅读.相反,app.set设置属性app.locals.settings.你可以验证这个,如果你app.locals.settings在上面用clobber app.locals.settings = {},这将使#{settings.baz}未定义.
那么你用哪个?如果它不是基于response(res.set)或全局配置(app.set)的应用程序设置,请使用直接写入app.locals.
| 归档时间: |
|
| 查看次数: |
5201 次 |
| 最近记录: |