AngularJS : konkatenieren Pausen-Modul in der Reihenfolge der Deklaration

Ich bin mit Grunzen zu verketten meine .js Dateien für meine Eckige app.

Habe ich gerade durchgemacht und aufgeräumt, die Codebasis zu Folgen den Konventionen diskutiert hier, insbesondere die Gruppierung der meinen code in kleine Module, die Funktionen darstellen.

Aber ich finde, dass die Reihenfolge der Verkettung erscheint, brechen Sie die app, wenn ein-Modul ist verbraucht, bevor es deklariert ist.

zB:

|-- src/
|   |-- app/
|   |   |-- userProfile/
|   |   |   |   userProfile.js
|   |   |   |-- deposits/
|   |   |   |   |-- depositFormCtrl.js

Wo:

//userProfile.js
var userProfile = angular.module('userProfile',[])

//depositFormCtrl.js
angular.module('userProfile')
    .controller('DepositFormCtrl', function($scope) {...});

Wenn grunt führt die Verkettung depositFormCtrl.js erscheint vor userProfile.js. Dies bewirkt, dass die app einen Fehler auslösen, zu jammern:

Nicht abgefangener Fehler: Keine Modul: userProfile

Ich sehe viele sprechen über die Möglichkeiten der Nutzung von RequireJS /AMD zu verwalten, die lade-Reihenfolge der Module. Aber oft ist es erklärte, dass dies übertrieben ist /nicht erforderlich, wie Eckige übernimmt dies für Sie.

E. g: Brian Ford von der Winkelposition team erwähnt:

Meine persönliche Meinung ist, dass, RequireJS zu viel; das einzige Merkmal, dass AngularJS das DI-system ist wirklich fehlt, ist das asynchrone laden.

Er erklärte auch,anderswo, dass er nicht empfehlen, RequireJS mit Angular.

Ich habe auch gesehen, wie erwähnt, gemacht, um mit angular-loader.js, wie gezeigt, auf die Saatgut-Projekt. Allerdings, so wie ich es verstehe, (es gibt wenig offizielle Dokumentation) der loader soll das problem der be-Module aus, um, anstatt Sie referenziert werden, bevor Sie verwendet werden.

Hinzufügen angular-loader.js zu meinem Projekt das Problem nicht löst.

Gibt es eine Erklärung, die ich verwenden sollten, die verhindert, dass die Fehler, die ich habe?

Was ist der richtige Weg, um zu erklären, Module & Controller, so dass die Reihenfolge der Dateien verkettet hat keinerlei Einfluss auf den code zur Laufzeit?

  • Dies ist genau der Grund, warum ich empfehlen, mit RequireJS mit Winkelgetriebe. RequireJS lassen Sie sich ganz einfach definieren die Ladereihenfolge aller Ihrer Skripts ein, und als die, die bei der Bereitstellung für die Produktion, verwenden Sie r.js (der RequireJS-Optimierungstool), die Ihren laden um-definition-Datei und verketten Sie die Dateien genau in der Reihenfolge, in der Sie anweisen, es zu tun. Dies ist, was ich Tue, an meinen Projekten und es funktioniert perfekt.
  • Ich weiß nicht, ob dies Ihr problem behebt (es mir). Aber ich hatte zu laden app.js erste (die Datei mit der var app deklariert, dann könnte ich die wildcard den rest der Dateien, die mit grunt-contrib-concat
InformationsquelleAutor Marty Pitt | 2013-06-13
Schreibe einen Kommentar