2017-07-06 1 views
1

Die Winkel documentation for the angular.bootstrap(...) method sagen das zweite Argument ist:Warum Bootstrap * * Angular mehr Module zu einem einzigen * * Elemente

... eine Array von Modulen in die Anwendung zu laden. Jedes Element in dem Array sollte der Name eines vordefinierten Modul sein oder ein (DI kommentierte)

I nie Angular Code gesehen hatte, die vergeht ein mehr als ein Modul in boostrapped zum gleichen DOM Element zu sein. .. Warum willst du das machen? Winkel Tutorials bieten kein Beispiel. Also habe ich this example auf StackOverflow gefunden. Dieses Beispiel Schopf aus dem Sumpf sowohl peopleApp und thermostatApp auf das Dokument:

angular.bootstrap(document, ['peopleApp','thermostatApp']); 

Was passiert, wenn diese Anwendungen die gleichen Namen für einen Controller haben? Wie MyCtrl? Welche Definition wird respektiert?

Wie funktioniert das Boosten mehrerer Module? anders als eine neues ConsolidatedModule zu schaffen, die hat Abhängigkeiten die ein oder mehrere Module Sie und dann Bootstrapping nur die einzigenConsolidatedModule boostrapped haben würden? dh

angular.module('ConsolidatedModule', ['peopleApp', 'thermostatApp']); 
angular.bootstrap(document, ['ConsolidatedModule']) 

klar sein, ich spreche nicht über separate apps to separate DOM elements. Bootstrapping

Andere anekdotische Hinweise (auch here gezeigt), die mich verwirrt darüber macht:

  • Sie can't shouldn't (?) bootstrap an app within another already bootstrap'd app (. .. weil

    "seinen Weg durch das DOM und se Scope-Bindings aufsetzen und Direktive-Linking-Funktionen ausführen. Wenn Sie das zweimal tun, Sie gehen auf Probleme stoßen „

    -. Und doch das gleiche Element mit zwei Modulen Bootstrapping wird nicht Lauf Probleme)

  • In Angular2? ist platformBrowserDynamic.bootstrapModule(...) Singular, impliziert es nur akzeptiert einziges Argument (ich nicht die API finden konnte), so bin ich noch mehr verwirrt, was es bedeutet, in Winkel 1. * mehr Module zum selben Bootstrap DOM-Knoten
+2

* Wie erfolgt das Boosten mehrerer Module; anders als das Erstellen eines neuen ConsolidatedModule *: Es gibt keinen Unterschied, und es gelten die gleichen Regeln für Namenskonflikte. –

+1

Es gibt keinen * praktischen * Grund, eine App mit dieser Struktur zu entwerfen, soweit ich weiß. Es * könnte * ein nützlicher Grund sein, dies zu tun, wenn Sie nur mit einem minimierten Modul arbeiten müssen, das jemand anderes zur Verfügung gestellt hat. Aber, wie die Dokumentation an mehreren Stellen vorschlägt, "testet" das Framework nicht aktiv gegen dieses Szenario. – Claies

+1

Ich würde vermuten, dass der Bootstrap-Code dies überhaupt unterstützt, ist wahrscheinlich ein Legacy-Artefakt, das den Aufwand nicht wert war zu entfernen, wurde aber nicht einmal in der Überarbeitung des Frameworks berücksichtigt. – Claies

Antwort

1

Es gibt keinen Unterschied zwischen

angular.module('ConsolidatedModule', ['peopleApp', 'thermostatApp']); 
angular.bootstrap(document, ['ConsolidatedModule']) 

und

angular.bootstrap(document, ['peopleApp', 'thermostatApp']) 

außer unnötigem ConsolidatedModule-Modul, das im ersten Fall erstellt wird.Nur 1 Injektor wird erstellt, und Bootstrapping mit mehreren Modulen hat nichts mit multiple Bootstrapping zu tun.

Das zweite Argument ermöglicht es, eine Liste von Modulen dynamisch bereitzustellen. I.e.

const modulesList = ['foo']; 

if (ENV_BAR) 
    modulesList.push('bar'); 

angular.bootstrap(document, modulesList); 
+0

OK, ich bin bereit, diese Antwort zu akzeptieren, da Kommentare die gleiche Idee haben, aber bitte erklären:" Bootstrapping mit mehreren Modulen hat nichts zu tun mit mehreren Bootstrapping. " -- Was sind diese? oder: Ist das dieselbe Unterscheidung, die ich in der Frage gemacht habe? dass ich mich * nicht * auf "Bootstrapping separater Apps zum Trennen von DOM-Elementen" bezieht. (Ich glaube, Sie würden es "Multiple Bootstrapping" nennen?) –

+0

Und danke, dass Sie meine Frage "Wie sieht das Boardern mit mehreren Modulen anders als ein ConsolidatedModule aus?" Beleuchten, wie "Boardern mit mehreren Modulen anders ist als ein Modul * innerhalb * eines anderen Moduls zu erweitern, dh verschachtelt? Ist letzteres erlaubt, ohne Fehler? Ist es ähnlich? " –

+0

Als ich schließlich versuchte herauszufinden, ob das Verhalten von "ConsolidatedModule" ähnlich war, war ich überrascht zu erfahren, dass "peopleApp" und "thermostatApp" nun Dienste von einander nutzen können, obwohl sie als "Geschwister" deklariert sind. d. h. 'peopleApp' kann einen Dienst unter Verwendung eines' thermostatApp'-Dienstes aufbauen, selbst ohne direkt von 'thermostatApp' abhängig zu sein; aber nur weil * sowohl * peopleApp' als auch 'thermostatApp' als Multiple-Module geladen sind (oder zusammen konsolidiert und dann aufgeladen werden, wie du schon sagtest) –

Verwandte Themen