Если следовать туториалам по Angular, то даже самое простое приложение на нём уже "забивает"
index.html примерно такими строками:
<!-- library scripts -->
<script src="lib/angular/angular.js"></script>
<script src="lib/angular-ui-router/release/angular-ui-router.js"></script>
<script src="lib/angular-loading-bar/build/loading-bar.min.js"></script>
<!-- app scripts -->
<script src="app/app.js"></script>
<!-- services -->
<script src="app/components/auth/AuthService.js"></script>
<!-- controllers -->
<script src="app/components/home/HomeController.js"></script>
<script src="app/components/auth/LoginController.js"></script>
<script src="app/components/navigation/NavigationController.js"></script>
А ведь тут всего-то авторизация, главная страница и навигационное меню. И всё. И всё, Карл!
Теперь, чтобы добавить новый модуль (например, "Личный кабинет"), нужно будет проделать следующий квест:
- Подредактировать app.js, чтобы Angular "подхватил" новый модуль
- Подредактировать index.html, перечислив все файлы (контроллеры, сервисы и т. д.), используемые модулем
Боюсь даже представить, что будет с ростом приложения, и только попробуй потом забыть включить какой-то из файлов.
Собственно, основной вопрос:
Как сделать так, чтобы включение/отключение модуля достигалось только в том же app.js? Либо в index.html приходилось добавлять максимум одну строку (например, "modules/module1/main.js"), которая бы подхватывала все контроллеры и прочее (в идеале, конечно, разбросанных по разным файлам)?
Сейчас вижу только два решения:
- Использовать RequireJS. Позволяет добиться желаемого эффекта, когда правятся только JS-файлы, но, как мне кажется, описывать зависимости модулей и в Angular, и в RequireJS как-то излишне что ли. Да и вообще, должны же быть в Angular свои родные решения?
- Делать сборку в один JS-файл. Вроде очевидное решение, но для разработки не совсем удобное.
Отсюда и любопытствую, как решают проблему модульной разработки опытные разработчики? Может есть более очевидные решения, которых я не вижу?