@neznaykink

Как в Angular уйти от включения JS-файлов в index.html?

Если следовать туториалам по 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>

А ведь тут всего-то авторизация, главная страница и навигационное меню. И всё. И всё, Карл!

Теперь, чтобы добавить новый модуль (например, "Личный кабинет"), нужно будет проделать следующий квест:
  1. Подредактировать app.js, чтобы Angular "подхватил" новый модуль
  2. Подредактировать index.html, перечислив все файлы (контроллеры, сервисы и т. д.), используемые модулем


Боюсь даже представить, что будет с ростом приложения, и только попробуй потом забыть включить какой-то из файлов.

Собственно, основной вопрос:
Как сделать так, чтобы включение/отключение модуля достигалось только в том же app.js? Либо в index.html приходилось добавлять максимум одну строку (например, "modules/module1/main.js"), которая бы подхватывала все контроллеры и прочее (в идеале, конечно, разбросанных по разным файлам)?

Сейчас вижу только два решения:
  1. Использовать RequireJS. Позволяет добиться желаемого эффекта, когда правятся только JS-файлы, но, как мне кажется, описывать зависимости модулей и в Angular, и в RequireJS как-то излишне что ли. Да и вообще, должны же быть в Angular свои родные решения?
  2. Делать сборку в один JS-файл. Вроде очевидное решение, но для разработки не совсем удобное.


Отсюда и любопытствую, как решают проблему модульной разработки опытные разработчики? Может есть более очевидные решения, которых я не вижу?
  • Вопрос задан
  • 1541 просмотр
Решения вопроса 4
Ronnie_Gardocki
@Ronnie_Gardocki
Я у мамы фронтендщик.
На нормальном проекте должна быть инфраструктура с галпом/вебпаком. Если вам самим лень в таком копаться, погуглите готовые генераторы yeoman с angular+webpack/gulp. Жизнь сразу станет проще и веселее.
Ответ написан
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Комментировать
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
<!-- 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>

Вот это все в один файл конкатенируется и будет счастье
Ответ написан
@neznaykink Автор вопроса
В общем, видимо, буду собирать всё в один файл.

Не вижу особого смысла в использовании gulp и ему подобных, когда как в Visual Studio можно в файле tsdconfig.json задать параметр outFile.

Отсюда, включение/отключение модулей будет внутри app.js, без правки index.html и других файлов.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы