Modularize AngularJS-Anwendung: ein oder mehrere AngularJS-Module?

8

Ich versuche eine modulare Anwendung mit AngularJS zu erstellen. Meine erste Idee ist es, jedes Modul funktional mit dieser Art von Ordnerstruktur zu gruppieren:

%Vor%

Beachten Sie, dass der Ordner "core" grundlegende Funktionen enthält, die immer in der App vorhanden sind. Andere Module können unabhängig voneinander hinzugefügt oder entfernt werden.

Da meine Anwendung groß sein wird, möchte ich auch das Lazy Loading verwenden. Ich habe diese Lösung implementiert: Ссылка , die mir tatsächlich am einfachsten erscheint. Das Problem ist, dass es nur lazy lädt für Controller, Dienste, Direktiven ... aber nicht für AngularJS-Module.

Ich weiß, dass es einen anderen Weg gibt, um angulare Module zu laden ( Ссылка <) / a>), aber ich denke, es ist viel zu hacky, da es die Kernmethoden von Angular verwendet.

Meine Frage ist: macht es in meinem Fall Sinn, verschiedene AngularJS-Module für jedes meiner Module zu verwenden, so:

%Vor%

Was ist der Vorteil dieses Ansatzes? Sind AngularJS-Module - bisher - nur für Module von Drittanbietern für Angular geeignet?

Ich frage das, seit AngularJS 2.0 nativ Lazy Loading unterstützt. Miško Hevery von Google sagt: "[Sie] sollten nach Ansicht gruppieren, da Ansichten in naher Zukunft faul geladen werden", und dass wir ein Modul pro Anwendung verwenden sollten, siehe hier: Ссылка

Ist es richtig für eine große Anwendung, nur ein Modul für meine App wie folgt zu verwenden:

%Vor%

Und dann faul laden meine Controller, Dienste und Anweisungen basierend auf einer Route oder einer Ansicht?

    
tomahim 05.02.2014, 09:41
quelle

1 Antwort

1

Wir haben eine ähnliche Struktur (in einer sehr großen App) wie die, die Sie hier vorschlagen, außer dass keine Controller, Dienste und Ähnliches in einzelne .js-Dateien gebündelt sind. Stattdessen trennen wir nur unsere Anliegen mit Ansichten, Dienstleistungen und ähnlichem, alles in einem einzigen Modul gebündelt. So könnte jede sinnvolle Komponente aussehen:

%Vor%

Dies ist alles in einem einzigen App-Modul gebündelt (benannt nach unserer Organisation). Dann ein einfaches Boot-Modul angular.bootstrap(['app']) s das Ganze. Wir verwenden browserify , um all diese Sachen zu kompilieren und es hat bisher gut funktioniert.

    
SonOfNun 20.02.2014 00:37
quelle