wake-up-neo.com

Gibt es eine Möglichkeit, in Angular Komponenten zu laden, nicht Module?

Lazy Loading ist eine häufig verwendete Technik. In Angular scheint es jedoch, dass die Granularitätsstufe dieser Technik auf Modulebene stoppt. 

Das bedeutet, dass Sie das Modul main haben können, das im Browser geladen wird. In besonderen Situationen können die Module B und C und D nur mit Verzögerung geladen werden.

Fast alle Tutorials im Web erklären das. Gibt es eine Möglichkeit, Komponenten faul zu laden?

Betrachten Sie dieses einfache Beispiel, in dem der Benutzer in die Anwendung eintritt. Wenn Sie auf den Link "Rechnungen" klicken, ändert sich die URL in die neue Route /invoice/list. Eine Fortschrittsleiste zeigt das Laden an, während die Komponente invoices einschließlich HTML und JS im Browser registriert wird dynamisch mit dem Hauptmodul und wird in der jeweiligen Steckdose angezeigt. Ist das mit Angular möglich?

Ein faules Laden einer Komponente ist nicht möglich .. Grund für dieses Verhalten ist die Struktur von angle. Komponenten in eckig müssen Teil eines Moduls sein. Das Modul Angular ist ein Container, in dem Sie alle Komponenten, Services, Pipes e.t.c. definieren. innen präsent. Beim Erstellen der Anwendung dist werden alle im Modul deklarierten Abhängigkeiten eingeschlossen, um einen Block (transpilierter js-Code) zu erstellen. Alle direkt importierten Module bilden zusammen den Hauptblock, während die als träge geladenen Module einen separaten bilden Chunk, der sich auf dem Server befindet, bis die entsprechende Route getroffen wird, und ein Aufruf dafür vom Client aus abgerufen wird .. _ Jetzt bilden Komponenten keinen Chunk und sind daher nicht möglich

6

Etwas hackig ... aber möglich (zukünftige Versionen von Angular (über Ver. 7) werden einen leichteren Ansatz implementieren)

https://blog.angularindepth.com/dynamic-loading-components-with-angular-cli-92a3c69bcd28

0

Derzeit (Angular 8-Zeitrahmen) gibt es zwei Bibliotheken von Drittanbietern, die das verzögerte Laden von Komponenten erleichtern:

Hinweis: Beide Bibliotheken basieren auf NgModuleFactoryLoader, das in Angular 8 veraltet ist, aber es gibt noch keine Alternative ...

Das Angular Team hat angekündigt, dass das langsame Laden von Komponenten mit Ivy (Angular 9?) Einfacher werden soll, aber es ist noch nicht klar, wie das aussehen wird ...

0
jbandi