簡體   English   中英

在Express中使用app.set vs app.value

[英]Using app.set vs app.value in Express

在我的app.js文件中,我使用app.set(valName, value)將幾個配置值傳遞給我的路由。
然后我將應用程序傳遞給我的路線: 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對象(例如app.valName = value; ),您可能會覆蓋Express已初始化以供內部使用的屬性。

您可以從Express的源代碼中看到,Express應用程序在其init函數中創建了以下屬性:

this._baseRoutes = {};
this.cache = {};
this.settings = {};
this.engines = {};
this.defaultConfiguration();

執行defaultConfiguration函數后, defaultConfiguration設置更多屬性。 這意味着如果你想擁有一個名為cachesettingsengines的屬性,僅舉幾例,你將踩到Express的腳趾,並且可能會在你的應用程序運行時出現問題。

您可以從app.set源代碼中看到應用程序設置在設置對象中排序,而不是直接在應用程序對象中排序。 這是為了防止我剛才描述的內容:與內部屬性名稱沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM