首先,我在Node.js中沒有那麼有經驗。我對Node.js模塊的理解是,這些模塊與Python的模塊非常相似。我的意思是隻執行一次代碼並保持內部狀態。直到我讀過this article:可以依賴node.js模塊狀態嗎?
但你可能不知道,如果你的項目是 基於NPM模塊都需要在「共享」模塊作爲 依賴,就像(我肯定沒有!)這樣的:
node_modules/one/index.js: var shared = require('shared'); node_modules/two/index.js: var shared = require('shared');
...而 安裝它們的依賴與NPM,將有 「共享/ index.js」 兩個副本晾一下:
node_modules/one/node_modules/shared/index.js node_modules/two/node_modules/shared/index.js
讀完之後,我不確定是否可以依賴模塊的內部狀態,因爲在不同路徑上存在一個模塊的可能性,因此在緩存中有相同模塊的兩個或多個實例。這意味着至少「通過本地模塊機制不再有單身人士」。同時,我還沒有聽說過Python中的這個問題。
這是否意味着幾乎所有模塊都只返回函數/構造函數(如express.js
應用程序創建流程)並避免內部狀態?
那麼,如果同一個模塊同時出現兩個不同狀態是一個問題,那麼重點就是避免模塊的狀態?因此,在需求期間,應該通過依賴注入來在模塊之間顯式地傳遞實例。 –
@Ostrovski我儘量避免依賴注入,因爲它有點魔法,可能會讓人困惑。如果我需要共享狀態,我嘗試使用共享的狀態對象或某種消息傳遞(事件總線或類似memcached或redis的東西) - 這樣您可以更好地控制情況。 – tkone