所以我知道方法app.set()是设置名称的值。因此,app.get()可以通过名称获取该值。但相应地,如果我将'view engine'设置为'ejs',那么app.get('view engine')在哪里?如果没有,app.set('view engine','ejs')的工作方式如何?Express:app.set('view engine','ejs')如何在内部执行?
感谢您回复此向导问题。
所以我知道方法app.set()是设置名称的值。因此,app.get()可以通过名称获取该值。但相应地,如果我将'view engine'设置为'ejs',那么app.get('view engine')在哪里?如果没有,app.set('view engine','ejs')的工作方式如何?Express:app.set('view engine','ejs')如何在内部执行?
感谢您回复此向导问题。
正如你期望它的工作原理:
它是如何工作的?
检查:https://github.com/expressjs/express/blob/master/lib/application.js#L336
从线:336
/**
* Assign `setting` to `val`, or return `setting`'s value.
*
* app.set('foo', 'bar');
* app.get('foo');
* // => "bar"
*
* Mounted servers inherit their parent server's settings.
*
* @param {String} setting
* @param {*} [val]
* @return {Server} for chaining
* @public
*/
app.set = function set(setting, val) {
if (arguments.length === 1) {
// app.get(setting)
return this.settings[setting];
}
debug('set "%s" to %o', setting, val);
// set value
this.settings[setting] = val;
// trigger matched settings
switch (setting) {
case 'etag':
this.set('etag fn', compileETag(val));
break;
case 'query parser':
this.set('query parser fn', compileQueryParser(val));
break;
case 'trust proxy':
this.set('trust proxy fn', compileTrust(val));
// trust proxy inherit back-compat
Object.defineProperty(this.settings, trustProxyDefaultSymbol, {
configurable: true,
value: false
});
break;
}
return this;
};
感谢您的源代码和图像。 – suoyong
怎么样有一个使用nconf中完成,然后在任何地方访问配置对象? – num8er