У мене є програма зі складним макетом, куди користувач міг розміщувати (перетягувати) віджети (вибираючи із заздалегідь визначеного набору 100+ віджетів), де кожен віджет є спеціальною реалізацією, яка відображає набір даних (отриманих за допомогою виклику REST) певним чином. Я прочитав багато публікацій у блогах, запитання щодо stackoverflow та офіційні документи AngularJS, але не можу зрозуміти, як слід розробляти свою програму, щоб відповідати вимогам. Дивлячись на демонстраційні програми, існує єдиний модуль (ng-app), і при його створенні у файлі .js залежні модулі оголошуються як його залежності, однак у мене великий набір віджетів, і чомусь не доцільно описувати всі там. Мені потрібна пропозиція щодо наступних питань:
- Як я повинен розробляти свій додаток та віджети - чи повинен я мати окремий модуль AngularJS, або кожен віджет повинен бути директивою для головного модуля?
- Якщо я розробляю свій віджет як директиви, чи є спосіб визначити залежність всередині директиви. Тобто сказати, що моя директива використовує ng-calender у своїй реалізації?
- Якщо я розробляю кожен віджет як окремий модуль, чи є спосіб динамічно додати модуль віджету як залежність від основного модуля?
- Як мені розробити контролери - напевно, один контролер на віджет?
- Як слід відокремлювати стан (область дії), якщо у мене є кілька віджетів від одного типу у поданні?
- Чи є найкращі практики для проектування віджетів, які можна багаторазово використовувати з AngularJS?
РЕДАГУВАТИ
Корисні посилання:
- ocLazyLoad - чудова лінива завантажувальна бібліотека для AngularJS
- Проект насіння - модулі + ліниве завантаження при зміні маршруту (ES6, systemjs, ocLazyLoad)
- Ледаче завантаження в AngularJS
- Динамічне завантаження контролерів та подань за допомогою AngularJS та RequireJS
- Завантаження компонентів AngularJS із RequireJS після завантаження програми
- Демо-проект про ліниве завантаження ресурсів AngularJS на GitHub
- Проект "Навантаження на вимогу"
- Вводити модуль динамічно лише за потреби
- Ще одне ліниве завантаження в статті Angular
- Організація коду у великих програмах AngularJS та JavaScript