Używam pomruków do łączenia moich plików .js
dla mojej aplikacji Angular.AngularJS: Łączenie plików łamie kolejność deklaracji modułu
Właśnie przeszedłem i uporządkowałem bazę kodów, aby przestrzegać konwencji omawianych pod here, w szczególności, zgrupowanie mojego kodu w małe moduły, które reprezentują funkcje.
Jednak stwierdzam, że kolejność konkatenacji wydaje się przerwać aplikację, jeśli moduł zostanie zużyty, zanim zostanie zadeklarowany.
np
|-- src/
| |-- app/
| | |-- userProfile/
| | | | userProfile.js
| | | |-- deposits/
| | | | |-- depositFormCtrl.js
gdzie:
// userProfile.js
var userProfile = angular.module('userProfile',[])
// depositFormCtrl.js
angular.module('userProfile')
.controller('DepositFormCtrl', function($scope) {...});
gdy grunt wykonuje konkatenacji depositFormCtrl.js
pojawia się przed userProfile.js
. To powoduje, że aplikację wyrzucić błąd, twierdząc:
Uncaught Error: No module: userProfile
widzę dużo mówi się o możliwości wykorzystania RequireJS/AMD zarządzać kolejność ładowania modułów. Jednak często mówi się, że jest to przesadne/niewymagane, as Angular handles this for you.
Np: Brian Ford kątowego zespołu mentioned:
My personal take is that RequireJS does too much; the only feature that AngularJS's DI system is really missing is the async loading.
On również stwierdził elsewhere że nie zaleca RequireJS z kątowy.
Zauważyłem również, że wspomniano o zastosowaniu angular-loader.js, jak pokazano na seed project. Jednak, jak rozumiem, (nie ma oficjalnej dokumentacji), ładowarka ma na celu rozwiązanie problemu ładowania modułów w kolejności, a nie ich odniesienie przed użyciem.
Dodanie pliku angle-loader.js do mojego projektu nie rozwiązało problemu.
Czy istnieje deklaracja, której powinienem użyć, aby zapobiec błędom, które mam?
Jaki jest prawidłowy sposób deklarowania modułów Sterowniki &, aby pliki zamówień były łączone, nie ma wpływu na kod w czasie wykonywania?
To właśnie dlatego zalecamy używania RequireJS z kątowy. RequireJS pozwala ci dość łatwo zdefiniować kolejność ładunków wszystkich twoich skryptów, a następnie, podczas wdrażania do produkcji, używasz r.js (optymalizator RequireJS), który może śledzić twój plik definicji porządku ładowania i łączyć pliki dokładnie w takiej kolejności, w jakiej ty to poinstruuj. Właśnie to robię w moich projektach i działa idealnie. – Stewie
Nie wiem, czy to naprawi twój problem (zrobił to mój). Ale najpierw musiałem wczytać plik app.js (zadeklarowałem plik z aplikacją "var app", a potem mogłem wprowadzić pozostałe elementy w pliku z "grunt-contrib-concat" – chovy