在nodejs和express中,settings和locals有什么区别



开始我的方式在node + express,有什么区别:

app.set(key, value)

app.locals({key: value});

我已经阅读了express文档,它指出app.locals被传递给所有渲染视图,但我也能够从jade视图访问设置(使用#{settings. somekey})。由于两者都可以在玉模板中使用,我似乎无法弄清楚两者的区别或不同的用法。

不同之处在于,通过直接操作app.locals,您可以为模板创建'顶级'变量,而不必使用settings.前缀。

app.set(key, value)app.locals.settings[key] = value相同;前者是配置Express的某些部分(如设置view engine)的首选方式。

EDIT:小演示,展示它们是如何做同样的事情的:

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'

最新更新