在Express中使用app.set和app.value
在我的app.js文件中,我使用app.set(valName, value)
将多个configuration值传递给我的路由。
然后我将应用程序传递给我的路线: app.use('/', require('./routes/index')(app))
;
然后,我可以轻松地使用app.get(valName)
来检索路线中的值。
我的问题是:只是使用app.valName = value;
是不是更容易app.valName = value;
然后只需访问app.valName
中的app.valName
?
我必须使用.set
和.get
? 或者这会违反什么?
我必须使用
.set
和.get
? 或者这会违反什么?
你有吗? 不,你应该吗? 是!
通过将应用程序属性直接设置为app
对象(例如, app.valName = value;
),您可能会覆盖Express已初始化供内部使用的属性。
您可以从Express的源代码中看到,Express应用程序在其init
函数中创build了以下属性:
this._baseRoutes = {}; this.cache = {}; this.settings = {}; this.engines = {}; this.defaultConfiguration();
在执行defaultConfiguration
函数之后, defaultConfiguration
设置更多的属性。 这意味着如果你想拥有一个名为cache
, settings
或者engines
的属性,那么你只需要加快Express的脚趾,当你的应用程序运行的时候,可能会导致一些错误。
你可以从app.set
的源头app.set
,应用程序设置是在一个设置对象中sorting的,而不是直接在应用程序对象中。 这是为了防止我刚刚描述的:与内部属性名称冲突。