Разработка приложения AngularJS с динамическим набором модулей

У меня есть приложение со сложным макетом, где пользователь может помещать (перетаскивать) виджеты (выбирая из предопределенного набора из 100+ виджетов), где каждый виджет представляет собой пользовательскую реализацию, которая отображает набор данных (выбирается с помощью вызова REST) определенным образом. Я'Я прочитал тонны постов в блоге, вопросы о стековом потоке и официальную документацию AngularJS, но я не могу понять, как мне разработать приложение, чтобы соответствовать его требованиям. Глядя на демонстрационные приложения, есть один модуль (ng-app), и при его создании в файле .js зависимые модули объявляются как его зависимости, однако у меня есть большой набор виджетов и как-то так ».Не стоит описывать их всех там. Мне нужно предложение по следующим вопросам:

Как мне разработать свое приложение и виджеты - должен ли я иметь отдельный модуль AngularJS или каждый виджет должен быть директивой для основного модуля?Если я создаю свой виджет как директивы, есть ли способ определить зависимость внутри директивы. То есть сказать, что моя директива использует ng-calender в своей реализации?Если я спроектирую каждый виджет как отдельный модуль, есть ли способ динамически добавить модуль виджета в качестве зависимости от основного модуля?Как я должен проектировать контроллеры - один контроллер на виджет, вероятно?Как я должен отделить состояние (область), если у меня есть несколько виджетов одного и того же типа в представлении?Есть ли лучшие практики для разработки многократно используемых виджетов с AngularJS?

РЕДАКТИРОВАТЬ

Полезные ссылки:

ocLazyLoad - отличная ленивая загрузка lib для AngularJSПроект Seed - модули + отложенная загрузка при смене маршрута (ES6, systemjs, ocLazyLoad)Ленивая загрузка в AngularJSДинамическая загрузка контроллеров и представлений с AngularJS и RequireJSЗагрузка компонентов AngularJS с RequireJS после начальной загрузки приложенияДемонстрационный проект о отложенной загрузке ресурсов AngularJS на GitHubПроект Load On DemandВнедрить модуль динамически, только если требуетсяЕще одна ленивая загрузка в Angular статьеОрганизация кода в больших приложениях AngularJS и JavaScript

Ответы на вопрос(2)

Ваш ответ на вопрос