Мне нужно сообщить о разработке приложения AngularJS с несколькими сложными модулями и на основе роли пользователя, которую модуль загружает после авторизации и авторизации. Некоторые пользователи могут иметь доступ к одному простому модулю, а некоторые могут иметь панель мониторинга, а некоторые могут иметь доступ к 2 + модулям.
Есть много директив, которые мы определили, которые можно повторно использовать в разных модулях. На этапе проектирования мы определили следующие вещи, которые должны существовать, и у нас есть ответы на некоторые из приведенных ниже пунктов, но нам все еще нужен совет от экспертов:
- Модуль может иметь
- Partials
- Контроллеры
- Директива
- Услуги
- Обработка исключений (код состояния HTTP или бизнес-ошибки)
- Ведение журнала (с номером строки, с какой функцией)
- Может также потребоваться сохранить зарегистрированную информацию на сервере
- Должна иметь возможность включать и выключать ведение журнала
- пользовательские виджеты с помощью класса factory (повторно используется в других модулях)
- Общие директивы (изолированная область)
- Общие модули
- Общие утилиты (сортировка, фильтрация и т.д.)
- Перечислители по основным данным
- Константы через singleton
- Аутентификация (CSRF)
- автономное хранилище
- Услуги REST
- Обработка событий для отправки из одного модуля и обработки его в других
Пользовательский интерфейс приложения выглядит как фиксированная строка меню в верхней части страницы с выпадающей навигацией в левом верхнем углу с несколькими ссылками в зависимости от роли пользователя. Когда пользователь нажимает на ссылку, соответствующий модуль должен быть загружен на страницу. Должен быть пустой проект, который вручную загружается и загружает другие модули во время выполнения.
Наш подход состоит в том, чтобы иметь следующую структуру папок:
- приложение
- активы
- CSS
- lib js
- изображения
- общие компоненты
- директивы
- утилиты
- Аутентификация
- Прокси-сервер службы для хранения вызовов $resource
- Перечисления
- Константы
- Модель
- entity json (пример клиента, продукта и т.д.)
- бизнес-модуль A
- Partials
- Директивы
- Услуги
- Контроллеры
- бизнес-модуль B
- бизнес-модуль C
- index.html
- Файл конфигурации Requirejs
- активы
Итак, мои вопросы:
- Как служба внутри модуля разговаривает с другим модулем?
- Модуль должен разрабатываться и запускаться независимо?
- Как можно обрабатывать связь между модулем при передаче данных?
- Как интегрировать все вышеперечисленные элементы, в частности обработку исключений, протоколирование?
- Разработчики должны понимать соглашение, которое мы определили?
- Какой метод вызывать для ведения журнала, отправки информации между модулем?