1
我想創建一個應用程序,它可以分成多個模塊,並具有自己的路由和全部模塊。用戶可以從應用程序主模塊打開和關閉這些模塊。如何在角度創建可插拔應用程序?
- 我是否必須加載所有的模塊,並基於用戶是否訂閱了它。我認爲它會減慢應用程序負載,因爲加載了所有模塊代碼並在應用程序引導時注入。
- 這個問題還有其他的選擇嗎?
我想創建一個應用程序,它可以分成多個模塊,並具有自己的路由和全部模塊。用戶可以從應用程序主模塊打開和關閉這些模塊。如何在角度創建可插拔應用程序?
啓用模塊的列表應該被提供用於主模塊:
var enabledModules = [...];
angular.module('app', ['thirdParty', 'app.common'].concat(enabledModules));
顯然,enabledModules
陣列不能正常地加載有$http
,由於應用程序未在這一點自舉。可以使用XHR或服務器端模板來定義它。
或者,可以使用單獨的應用程序來加載先決條件。由於使用DI,可以對其進行徹底測試。
angular.module('app', ['thirdParty', 'app.common']);
angular.module('appInitializer', [])
.factory('loader', ($http) => {
return $http.get('enabled-modules').then((result) => result.data);
})
.factory('initializer', (loader, $document) => {
return loader.then((enabledModules) => {
$document.ready(() => {
angular.bootstrap($document.find('body'), ['app'].concat(enabledModules));
});
});
});
angular.injector(['ng', 'appInitializer'])
.get('initializer')
.catch((err) => console.error(err));
謝謝,我想我必須創建一個服務器端的登錄頁面,它將驗證用戶和在此基礎上,我將創造出具有根據應用程序的正確依賴關係一個dyanamic的index.html和app.js給用戶。 –
它可能只是爲了方便與'