Comments 27
Если точнее, в генераторе есть grunt-ngmin, а grunt-ngmin использует ngmin, который есть и под gulp.
А что для сборки-то придумали? Это генератор с возможностью автоматичкого подключения файлов в html-страницу.
Он генерит неведомо что. В сгенерированном grunt-файле не рабоатет часть тасков. Например, cdnify. Переводить всё это дело на gulp — боль отдельная.
я использую обыкновенный build.json с таким содержимым:
а потом собираю по нему php скриптом. Мартышкин труд вроде, а с другой стороны один раз написал и забыл…
{
"application":"App",
"controllers":["Controller1","Controller2"],
"modules":["Module1","Module2",..],
...
}
а потом собираю по нему php скриптом. Мартышкин труд вроде, а с другой стороны один раз написал и забыл…
А в чем проблема сразу написать, скажем, bootrstrap.js:
И подключать его первым?
angular.module('App.controllers',[]);
angular.module('App.services',[]);
angular.module('App.myModule',[]);
angular.module('App',['App.controllers','App.services', 'App.myModule']);
И подключать его первым?
Потому что в этому случае, не нужно будет писать дополнительную библиотеку. Очевидно же.
Не вижу причин, почему бы не делать так, как вы предлагаете. Единственное, если у вас модули регулярно гуляют между проектами, то, наверное, будет удобнее хранить их объявление вместе с остальным кодом, но это, конечно, слабый аргумент. Поэтому добавил в пост ссылку на комментарий.
А где гарантия того, что файл bootrstrap.js будет исполнен до какого либо контроллера?
И подключать его первым
Не заметил. В статье автор рассматривает такую проблему
Ваш способ отлично решает эту проблему. Но это не единственная проблема при определении порядка загрузки/объединения скриптов. Допустим, есть файл router.js, в котором прописаны роутинги. Ему для работы нужны некие провайдеры. Нужно чтобы провайдеры были загружены раньше роутера.
Как я понимаю эту проблему не решает предложенный в статье NgConcat.
Основная проблема в том, что при объявлении контроллера, сервиса, директивы и т. д. сперва должен быть задан модуль, которому они принадлежат.
Ваш способ отлично решает эту проблему. Но это не единственная проблема при определении порядка загрузки/объединения скриптов. Допустим, есть файл router.js, в котором прописаны роутинги. Ему для работы нужны некие провайдеры. Нужно чтобы провайдеры были загружены раньше роутера.
Как я понимаю эту проблему не решает предложенный в статье NgConcat.
Использую с browserify, полёт нормальный. На предмет возможных косяков проанализировал, не смог придумать.
Можно использовать обычный
Есть презентация на эту тему:
benclinkinbeard.com/talks/2014/ng-conf/
benclinkinbeard.com/talks/2014/ng-conf/#/20 — на 20-ом слайде конкретный пример.
Можно использовать обычный
require
модуля, можно использовать совместно с ангуларовским DI.Есть презентация на эту тему:
benclinkinbeard.com/talks/2014/ng-conf/
benclinkinbeard.com/talks/2014/ng-conf/#/20 — на 20-ом слайде конкретный пример.
Вы browserify с shim используете?
Нет.
А как вы сторонние библиотеки подключаете?
Делаю
О каких проблемах вы говорите?
require
. Как правило, всё, что мне нужно, есть в npm, и оно работает через browserify без напильника (почти всегда). Однажды у меня была проблема с tls
, но я его просто проигнорировал в browserify, и пакет прекрасно работал в браузере. Иногда приходится использовать не модуль, а его dist-версию, но редко.О каких проблемах вы говорите?
Я обычно использую bower для фронтенда и здесь возникает проблема, что большинство библиотек AMD, а не CommonJs. И даже, если в файле сборки прописать порядок подключения этих файлов, browserify может собрать их произвольно, поэтому приходится отдельно указывать зависимости в shim.
Почему-то никто не прокомментировал про структуру проекта.
Окей, хорошо, если вы делаете калькулятор. При условии, что вы пишете production code для большого проекта с парой тысячей контроллеров, вы просто утонете во всем этом. На хабре был разбор полетов на эту тему, главным смыслом которого была группировка не по типу, как в angular seed (контроллеры/директивы/сервисы), а по entities. Например:
Соответственно, проблемы как собрать собрать подобный проект без всяких примочек, у нас не возникало.
app.js
controllers/
FirstCtrl.js
SecondCtrl.js
services/
FirstSrv.js
SecondSrv.js
Окей, хорошо, если вы делаете калькулятор. При условии, что вы пишете production code для большого проекта с парой тысячей контроллеров, вы просто утонете во всем этом. На хабре был разбор полетов на эту тему, главным смыслом которого была группировка не по типу, как в angular seed (контроллеры/директивы/сервисы), а по entities. Например:
app.js
user
- UserModule.js
- UserCtrl.js
- AuthCtrl.js
- UserService.js
dashboard
- DashboardModule.js
- DashboardCtrl.js
- DashboardDirectiveThatShowsNeatCats.js ;)
Соответственно, проблемы как собрать собрать подобный проект без всяких примочек, у нас не возникало.
А дальше ведь могут быть ещи и самостоятельные модули со своей структурой.
Эх, чуть-чуть не дочитали
А почему, скажем, ваш раздел user содержит только один контроллер? Если их будет больше, то вы получите все те проблемы, которые описаны в статье.
Sign up to leave a comment.
Собрание ваших сочинений на Angular.js