@LEKAPb

AngularJS можно ли сделать полностью lazy приложение?

Доброе время суток!
Стоит задача сделать полностью модульное lazy приложение.
Сейчас есть связка Angular + RequireJS т.е. сам angular и пустое приложение отлично стартует асинхронно с подгрузкой зависимостей указанных в RequireJS config файле. Но проблема в том что в самом angula.module("app") нужно будет сразу сконфигурировать все state для всех модулей - что очень плохо.
Следующий этап :
После запуска приложения, необходимо обратиться к REST сервису или просто JSON файлу, который скажет какие модули существуют. И уже с загрузкой модулей и их зависимостей работать дальше.
Основная проблема в том, как работать в таком случае с $stateProvider, т.к. хотелось бы что бы angular при переходе по ссылкам следующего типа смог подгружать states, controllers,directives,services для этих модулей:
localhost/ReportsModule - Должен загрузить state для этого модуля :
.state('ReportsModule', {
url: '/ReportsModule',
templateUrl: '/ReportsModule/templates/index.html',
controller: 'ReportsMainController',
});
после этого загрузить контроллер ReportsMainController с его зависимостями.
Есть ли вообще такая возможность или можно только lazy controllers через requireJs делать?
  • Вопрос задан
  • 315 просмотров
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
нет такой возможности, во всяком случае из коробки. Почитайте дискуссию в официальном репозитории. В общем и целом для большинства проектов на ангуляре проще просто загрузить все один раз на клиент и работать с этим.

Еще вариант - если у вас приложение грамотно разбито на директивы (а не контроллеры отдельные с вьюшками) то можно попытаться сделать ленивую подгрузку сервисов в фабриках + ленивую подгрузку директив. Чисто теоритически это возможно и чисто теоритически так можно подгружать лениво большую часть проекта.

p.s. вроде как обещали в angular 1.5 сделать что-нибудь с этим но я не следил - для меня это без надобности. В Angular2 это будет по сути из коробки доступно так как в качестве системы модулей используется стандартные ES2015 модули.
Ответ написан
Комментировать
AMar4enko
@AMar4enko
https://christopherthielen.github.io/ui-router-ext...
blog.getelementsbyidea.com/load-a-module-on-demand...

UPD. Вот тикет о поддержке добавления модулей после старта приложения в версии 1. Драфт реализации есть, запланирован на версию 1.6
https://github.com/angular/angular.js/pull/4694
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы