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给用户。 –
它可能只是为了方便与'