2012-12-08 50 views
8

我們正在嘗試創建具有多個/獨立「子應用程序」的門戶類型應用程序。假設所有子應用程序都是用Angular編寫的,那麼實現以下目標的好模式是什麼。帶AngularJS(多個獨立應用程序)的門戶類型應用程序

  1. 每個應用程序都可以獨立開發和部署。
  2. 他們共享一個共同的認證服務,他們可以共享公共庫(指令,過濾器等)。
  3. 在任何給定時間只有一個應用程序可見並處於活動狀態。每個子應用程序的範圍是相互隔離的。
  4. 當用戶進入子應用程序之間時,只要用戶不刷新頁面或訪問另一個靜態鏈接,就會保持該狀態。 (我認爲這是內置到Angular中,並且可能不需要特別的努力)
  5. 每個子應用程序都會有多個視圖(它將擁有自己的菜單)。將會有一個基於子應用程序可用的頂級菜單。理想情況下,頂級菜單是根據部署的子應用程序動態構建的。也許有一個服務器端組件(服務器檢測到文件夾結構等,並確定部署的應用程序,並注入必要的JS代碼到頁面中)。

鑑於AngularJs沒有多層次的視圖結構,我考慮在不同的div上使用多個ng-app聲明,然後使用$ window scope來存儲活動app的key並隱藏那些不活躍的。

回答

0

這件事我也一直在考慮嘗試實施。雖然我沒有一個完整的工作解決方案,但我相信這種類型的門戶應用程序將由同一頁面上的多個角度應用程序組成。

門戶應用程序將是主頁上的傳統ng-app指令,「portlet」將動態創建並在子視圖div上手動引導角應用程序。您可以通過注入門戶服務(包含在其自己的模塊中)來共享數據,狀態,身份驗證,個性化等,這些服務將這些功能提供到手動引導的portlet應用程序中。

棘手的部分是門戶網站的應用程序將如何發現portlet的應用和服務於它們的角模塊知道這些應用程序將被獨立部署自己的網址,網絡應用程序。

如果服務數據在應用程序之間是常見的,或者您需要通過門戶服務(如數據管理器)嘗試和利用HTML5本地存儲,我仍然有一些疑問。