Так же если у вас множество контроллеров, то удобнее распределить контроллеры по директориям, указав в загрузчике модуля (index.js) соответствующие пути:
А как вы поступите если вам для некоторой сборки нужно будет отключить определенный модуль? Для больших проектов жизненно необходимо разбивать именно по модулям.
Не заметил. В статье автор рассматривает такую проблему
Основная проблема в том, что при объявлении контроллера, сервиса, директивы и т. д. сперва должен быть задан модуль, которому они принадлежат.
Ваш способ отлично решает эту проблему. Но это не единственная проблема при определении порядка загрузки/объединения скриптов. Допустим, есть файл router.js, в котором прописаны роутинги. Ему для работы нужны некие провайдеры. Нужно чтобы провайдеры были загружены раньше роутера.
Как я понимаю эту проблему не решает предложенный в статье NgConcat.
На данный момент $q не поддерживает нативные промисы. Они только недавно попали в стандарт ES6, и поддерживаются далеко не всеми браузерами. Но в команде angular уже ведутся обсуждения на эту тему.
Посмотрите на структуру крупных open source проектов и подумайте почему «бородатые дяди» не пишут все в одном файле, пусть даже в рамках одного модуля.
И существенной разницы не почувствовал.
Если для вас это удобно, то пользуйтесь огромными файлами. Но когда вы будете работать над крупными проектами вы поменяете свою точку зрения, или ваши коллеги вам ее поменяют.
Потому что это хрестоматийная истина, 90% файлов должно умещаться на один экран. Попробую объяснить почему:
1. если вы работаете в команде, то все будут работать в одном огромном файле, что плохо скажется на сливании и комитах.
2. если вам нужно внести правки в код, то не придется скролить в 2600 строке. Достаточно набрать в IDE имя нужного файла.
3. нет структуры кода, невозможно понять какой класс/функция какому модулю принадлежат.
Не рекомендую использовать RequireJS с Ангуляром. Хотя это, конечно, возможно, я не видел ни одного случая, когда применение RequireJS было бы выгодно на практике.
Выгода от применения RequireJS заключается в асинхронной загрузке только необходимых файлов, благодаря чему уменьшается время первоначальной загрузки страницы. Так же не нужно следить за очередью загрузки js файлов, что в крупных проектах (с десятками файлов) приводит к постоянным проблемам, приходится поддерживать определенный порядок загрузки.
Так же когда вы измените лишь один js файл, то клиент скачает только измененный файл, а остальные возьмет из кэша. В случае же одного объединенного js файла клиенту придется скачивать его снова, что опять приводит к большему времени ожидания загрузки.
Да, я согласен с вами насчет данного конкретного примера. Когда у вас небольшая задача и вы знаете, что вам не придется дорабатывать и развивать код, то да можно писать спагетти-код. Но во всех остальных случаях необходимо писать «правильный» код. (Под «правильным» кодом я подразумеваю не код на Backbone. Я подразумеваю код, который отвечает единому принципу ответственности, код который можно тестировать, и легко поддерживать.)
А как вы поступите если вам для некоторой сборки нужно будет отключить определенный модуль? Для больших проектов жизненно необходимо разбивать именно по модулям.
Ваш способ отлично решает эту проблему. Но это не единственная проблема при определении порядка загрузки/объединения скриптов. Допустим, есть файл router.js, в котором прописаны роутинги. Ему для работы нужны некие провайдеры. Нужно чтобы провайдеры были загружены раньше роутера.
Как я понимаю эту проблему не решает предложенный в статье NgConcat.
git 154
svn 91
никакой 55
tfs 21
люди предпочитают жить без системы контроля чем с tfs
Если для вас это удобно, то пользуйтесь огромными файлами. Но когда вы будете работать над крупными проектами вы поменяете свою точку зрения, или ваши коллеги вам ее поменяют.
Потому что это хрестоматийная истина, 90% файлов должно умещаться на один экран. Попробую объяснить почему:
1. если вы работаете в команде, то все будут работать в одном огромном файле, что плохо скажется на сливании и комитах.
2. если вам нужно внести правки в код, то не придется скролить в 2600 строке. Достаточно набрать в IDE имя нужного файла.
3. нет структуры кода, невозможно понять какой класс/функция какому модулю принадлежат.
Выгода от применения RequireJS заключается в асинхронной загрузке только необходимых файлов, благодаря чему уменьшается время первоначальной загрузки страницы. Так же не нужно следить за очередью загрузки js файлов, что в крупных проектах (с десятками файлов) приводит к постоянным проблемам, приходится поддерживать определенный порядок загрузки.
Так же когда вы измените лишь один js файл, то клиент скачает только измененный файл, а остальные возьмет из кэша. В случае же одного объединенного js файла клиенту придется скачивать его снова, что опять приводит к большему времени ожидания загрузки.