2016-09-21 384 views
0

所以我知道方法app.set()是设置名称的值。因此,app.get()可以通过名称获取该值。但相应地,如果我将'view engine'设置为'ejs',那么app.get('view engine')在哪里?如果没有,app.set('view engine','ejs')的工作方式如何?Express:app.set('view engine','ejs')如何在内部执行?

感谢您回复此向导问题。

+0

怎么样有一个使用nconf中完成,然后在任何地方访问配置对象? – num8er

回答

0

正如你期望它的工作原理:

expressjs view engine

它是如何工作的?

检查: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; 
}; 
+1

感谢您的源代码和图像。 – suoyong

相关问题