在node + express中开始我的方式,有什么区别:
app.set(key, value)
和
app.locals({key: value});
我已阅读明文档,并声明app.locals会传递给所有渲染的视图,但我也能够从jade视图访问设置(使用#{settings.someKey})。 由于两者都在玉器模板中可用,我似乎无法弄清楚2的差异或不同的用法。
答案 0 :(得分:3)
不同之处在于,通过直接操作app.locals
,您可以为模板创建“顶级”变量,而不必使用settings.
前缀。
app.set(key, value)
与app.locals.settings[key] = value
相同;前者是配置Express某些部分的首选方式(如设置view engine
)。
编辑:小型演示,展示他们如何做同样的事情:
var app = require('express')();
app.set('foo', 'bar');
console.log('app.get("foo"):', app.get('foo')); // 'bar'
console.log('app.locals.settings.foo:', app.locals.settings.foo); // 'bar'
app.locals.settings['foo'] = 'another bar';
console.log('2nd app.get("foo"):', app.get('foo')); // 'another bar'