[英]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
設置更多屬性。 這意味着如果你想擁有一個名為cache
, settings
或engines
的屬性,僅舉幾例,你將踩到Express的腳趾,並且可能會在你的應用程序運行時出現問題。
您可以從app.set
的源代碼中看到應用程序設置在設置對象中排序,而不是直接在應用程序對象中排序。 這是為了防止我剛才描述的內容:與內部屬性名稱沖突。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.