簡體   English   中英

Node.JS的插件系統

[英]Plugin system for Node.JS

我目前的工作在一個大型應用程序的Node.js ,之上快車

我希望能讓插件兼容,所以我開始編寫自己的小插件系統,其文件結構如下所示:

root/
|   plugins.json            # configures all plugins
|   plugins                 # contains all plugins
|   |   MyPlugin            # contains MyPlugin
|   |   |   MyPlugin.js     # defines Application hooks for MyPlugin
|   |   |   ...

MyPlugin/當然還包含路由,控制器,視圖,特定資源等。

app將調用MyPlugin實例的標准掛鈎是:

moduleInit(app)             # before starting the server or module has been loaded (if server is already running at module load)
moduleStart(app)            # right after server has been started or not at all
moduleCleanup(app)          # right before the party ends

到目前為止,這么好,但現在事情變得更復雜了(而且它們總是變得更加復雜),因為我必須考慮模塊初始化的順序(因為它們可能會將自己附加到處理程序堆棧中, usegetpost等等),等等......

由於我對Node和Express還有點新手,我開始懷疑:是否有可能已經有一個好的引擎可以做到這一切? 我找不到一個,這讓我相信這可能是一個壞主意? 也許有一個更“節點” - 或“表達” - 我可以忽略的做事方式?

謝謝你的幫助!

不要浪費精力重新發明輪子 - 使用名為NPM Modules的現有解決方案:)
你覺得這不是方法,你是對的。

IMO的最佳方法是NodeJs的NPM模塊,你可以自己寫一些。

至於“get”/“post”/ etc的處理程序綁定執行順序 - 你仍然可以控制程序包加載順序,不要忘記,所以你可以用“標准”方式實現它。

編輯#1:

  1. 你可以使用private
  2. 對於高度專業化的子組件示例,我建議您查看PassportJS項目。 它是關於Facebook和Google等外部平台的身份驗證,您希望在項目中啟用的每個平台都是一個單獨的NPM模塊。
  3. 是什么讓你覺得你不能在運行時卸載/重裝模塊? 是的,你可以。

我沒有使用它,但架構師可能適合賬單https://github.com/c9/architect

Architect是Node.js應用程序的一個簡單但功能強大的結構。 使用Architect,您可以設置一個簡單的配置並告訴Architect您要加載哪些插件。 每個插件都使用Architect注冊,因此其他插件可以使用其功能。 插件可以作為NPM包進行維護,因此可以將它們放入其他Architect應用程序中。

暫無
暫無

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

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