簡體   English   中英

哪里可以找到帶有模塊的node.js中的單例?

[英]Where to locate singleton in node.js with modules?

關於javascript中的單例模式有很多問題。 我發現的所有答案都建議:

  • IIFE生產隱藏在封閉中的工廠。 然后使用該工廠,我們可以調用getInstance()

  • 避免依賴require (和node.js模塊)作為獲取單例的方式。

但是我們必須將該工廠存儲在某個地方,以便其他模塊可以訪問它。 它不能存儲在任何隨機模塊中,因為那樣我們就依賴require 在這種情況下,似乎擁有安全單身人士的唯一方法是:

  • 將工廠存儲在全局變量中或
  • 讓頂級腳本管理單例實例的創建(並將其傳遞給其他模塊)

其中一個比另一個更好嗎? 還有其他方法嗎?

Node.js已經提供了一種產生單例的方法。 CommonJS模塊(其他JS模塊也是如此)在首次導入時會評估一次,因此導出的對象保持單例狀態。 這是平台的自然行為,可以作為經驗法則。

Node.js模塊的這種行為可以通過require緩存處理(例如decache來覆蓋。 一種可能的用途是測試。 另一個用例是,如果希望這樣做的話,入侵第三方NPM模塊以產生單例,這將需要分叉。

將工廠存儲在全局變量中

通常不建議在模塊化環境中使用全局變量。

讓頂級腳本管理單例實例的創建(並將其傳遞給其他模塊)

這是依賴項注入模式。 可以在需要的地方使用它,但是如果應用程序不使用模式的好處,則會增加開銷。

暫無
暫無

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

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