angularjs – 如何以角度创建可插拔应用程序?

前端之家收集整理的这篇文章主要介绍了angularjs – 如何以角度创建可插拔应用程序?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想创建一个应用程序,它可以分为多个模块和自己的路由和所有.用户可以从应用程序主模块打开和关闭这些模块.

>我是否必须加载所有模块并且基于用户是否已订阅而不可用.我认为它会减慢应用程序负载,因为加载所有模块代码并在应用程序引导时注入.
>这个问题有其他替代方案吗?

应为主模块提供已启用模块的列表:
  1. var enabledModules = [...];
  2.  
  3. angular.module('app',['thirdParty','app.common'].concat(enabledModules));

显然,enabledModules数组不能正常加载$http,因为此时应用程序没有自举.可以使用XHR或服务器端模板来定义它.

或者,可以使用单独的应用程序来加载先决条件.由于使用DI,可以对其进行全面测试.

  1. angular.module('app','app.common']);
  2.  
  3. angular.module('appInitializer',[])
  4. .factory('loader',($http) => {
  5. return $http.get('enabled-modules').then((result) => result.data);
  6. })
  7. .factory('initializer',(loader,$document) => {
  8. return loader.then((enabledModules) => {
  9. $document.ready(() => {
  10. angular.bootstrap($document.find('body'),['app'].concat(enabledModules));
  11. });
  12. });
  13. });
  14.  
  15. angular.injector(['ng','appInitializer'])
  16. .get('initializer')
  17. .catch((err) => console.error(err));

猜你在找的Angularjs相关文章