2017-01-15 3 views
1

Я хочу создать приложение, которое можно разделить на несколько модулей с их собственной маршрутизацией и всеми. И пользователь может включать и выключать эти модули из основного модуля приложения.Как создать подключаемое приложение в угловом формате?

  1. Нужно ли загружать все модули и сбрасываться на основе того, был ли пользователь подписан на него или нет. Я думаю, что это замедлит загрузку приложения из-за загрузки всего кода модуля и инъекции при загрузке приложения.
  2. Есть ли другая альтернатива этой проблеме?

ответ

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)); 
+0

Спасибо, я думаю, что я должен создать страницу входа на стороне сервера, который будет проходить проверку подлинности пользователя и на основании того, что я буду создавать Dyanamic index.html и app.js, который имеет соответствующие зависимостей применения в соответствии для пользователя. –

+0

Это может быть просто динамический html для удобства с '

Смежные вопросы