2013-08-27 56 views
2

我已經使用nodeJS + expressJS好幾年了,現在正在爲我們的組織開發定製的應用程序平臺。我們的中央框架爲任何已安裝的模塊/應用程序提供了一套通用的服務(認證,語言,管理等)。如何在一個compoundJS實例下運行多個「應用程序」?

我想用compoundJS切換我們的框架。然而,我並不熟悉它所強加的設計約束(通常Rails應用程序),而且似乎無法弄清楚如何完成我之後的工作。

  • 我想只運行一個單一的服務器實例:通過我們共同的認證檢查所有 請求第一個進程。然後傳遞給應用程序的控制器。

  • 我還希望將每個應用程序分離出來:最好是在單獨的站點/ applications /目錄下的 。這些 應用程序中的每一個都可以使用compoundJS來正常設計。我想安裝他們像:

    cd site/applications 
    npm install site-hr 
    npm install site-finance 
    npm install site-payroll 
    

    這將不得不全部由/小時/金融/工資業務的路由。

我該如何做到這一點?

有沒有辦法讓compoundJS在模型/控制器/視圖中搜索非標準/ applications/*文件夾並在保持中心/站點配置的同時加載它們?

或者還有更好的方法嗎?

+0

爲什麼在幾年後改變? – WiredPrairie

+0

好問題。我們希望儘可能使用現成的技術,並且我想利用commonJS的模型,控制器和生成器。當我們開始時,沒有多少MVC框架出來用於節點。現在我們的團隊有時間探索這些新的並將它們整合到我們的堆棧中。希望我們可以通過使用commonJS來減少我們試圖維護的代碼。 – user1200245

回答

1

對不起,我遲到了,但我需要類似的東西:我需要將工具應用程序放在一個門戶中。

我找到了一種方法來將子應用程序作爲節點模塊包含在父節點的複合應用程序中。我寫了一個關於如何做的指南,併發送了一個pull請求,將它添加到CompoundJS' guides的高級文件夾中。它也可用here。它需要一些工作,但它適用於我們的4個應用程序。

希望它可以幫助。

+0

謝謝!這一定會讓我朝着正確的方向前進。 – user1200245

0

這是一個很好的觀點,但我們還沒有看到任何實施。可能幾年後會有一些。

在實例前使用代理層將是一個通用的方法,通常使用Nginx,Vanish Cache等。對於流血尖端的技術人員,我聽說Phusion Passengerimplemented Node.js support,但我還沒有成功測試過。如果你熟悉Ruby,這將是一個很好的嘗試。

如果你真的想建立一個大的項目有很多模塊,你可以嘗試例如Architect一些工業化框架Cloud9 IDE項目。

爲了驗證,我認爲這是必要的,每個應用程序使用獨立的方法,但他們可以用一個用戶數據庫共享。

+0

對不起,我意識到我寫了「commonJS」而不是compoundJS。但我確實喜歡建築師的樣子。我想我也可以在我們的框架中使用它。謝謝! – user1200245

1

很簡單。只需在config/environment中使用app.use即可。JS映射你的子應用:

var mod = require('your-compound-module'); 
app.use('/subroot', mod()); 

當你訪問/子根/ anypath,那麼它會被你的子應用程序/ anypath途徑處理。請注意,你不需要任何額外的路徑助手工作,因爲他們將以'/ subroot'自動開始(在複合端處理)。

+0

那麼是否有一些關於如何設置'your-comound-module'的文檔,以便我所有的路線,模型,視圖和控制器都能正確找到並使用? – user1200245

+0

只需按照生成器創建的通常模式操作:模塊應導出單個方法實例化您的應用。 – Anatoliy

相關問題