在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设置更多的属性。 这意味着如果你想拥有一个名为cachesettings或者engines的属性,那么你只需要加快Express的脚趾,当你的应用程序运行的时候,可能会导致一些错误。

你可以从app.set的源头app.set ,应用程序设置是在一个设置对象中sorting的,而不是直接在应用程序对象中。 这是为了防止我刚刚描述的:与内部属性名称冲突。