在包含許多.js
文件的節點項目中,假設我有一個管理昂貴狀態的文件:它提供了一個json
blob,它定期從Web以短時間間隔提取。它的數據被緩存,並且在內部被請求的時間遠遠超過其更新間隔。節點 - 在應用程序中正確引用有狀態文件
let provider = require('./config-provider.js');
let config = provider.get(); // returns locally cached JSON blob
假設上述代碼存在於我的應用程序中的10個不同文件中。這將創建此更新程序的10個不同實例,所有這些都會使昂貴的Web呼叫更新配置。
我想通過我的應用程序引用此配置提供程序的單個實例。但是,這似乎打破了Node應用程序的模塊化設計。
我總是可以使用全局對象,但這顯然是皺眉。
另一種解決方案是在我的應用程序中創建一個複雜的parent
/child
引用網絡。這似乎也很麻煩。
是否有一些建議的最佳做法是在整個Node應用程序跨度上引用單個有狀態模塊?
謝謝!是的 - 它看起來像「單身」是最好的選擇。這只是不幸的,因爲它看起來並不像某個人不喜歡的單一模式。 – dthree
在伸縮點上,這不是一個問題 - 我在Node中構建一個大型的CLI應用程序,所以它只是將用戶實例化一次。我不認爲這是大型Web項目的問題,因爲狀態通常是單獨存儲的,比如使用'redis'。在這種情況下,在Node應用程序中沒有保持狀態的動機。但是,我不會要求外部數據存儲,但對於CLI應用程序! – dthree
根據你的說法,這是有道理的。值得一提的是,單身人士最適合大多數只讀數據。如果多個異步進程開始多次寫入同一對象,則保持一致的狀態成爲一個考慮因素。不過,這似乎不是你的情況的問題。祝你好運! – arnold