2015-01-29 15 views
17

Ich arbeite an einem großen angluar Projekt und natürlich brauchen wir eine Möglichkeit, unsere Skripte faul zu laden.Angularjs: ocLazyLoad vs Requirejs

Ich habe schon mit require.js gearbeitet und es ist ziemlich gut, aber das Problem ist, dass nachdem wir unsere Dateien verkettet und verkleinert haben, haben wir eine 1.5M js Datei.

Also ich gerade OcLazyload angetroffen und es sieht vielversprechend aus, aber ich sah eine Menge Beispiele im Web, die beide benötigen und ocLazyLoad, ich bin ein wenig verwirrt, warum Sie beide verwenden möchten. Machen sie das nicht beide?

+1

Hinweis verwendet RequireJS verwenden Sie einige Dateien auf Anfrage laden können, also nur, wenn Sie tatsächlich brauchen sie (zum Beispiel in einer Direktive oder dergleichen). Behalte also dein "minimiertes" Bündel klein, mit dem, was zuerst geladen werden muss. – floribon

+0

@floribon - aber OcLazyLoading tut das gleiche und es kann sogar mit ui-Router integrieren und Dateien pro Zustand laden – Tomer

+3

Ich habe Ihre Bedenken über die Bündelgröße beantwortet. Aber ich wusste nichts über ocLazyLoading und es klingt großartig, weil ich das schon immer wollte. Sie schließen sich nicht gegenseitig aus, und ocLazyLoading benötigt eine Engine für Abhängigkeiten, die standardmäßig auf $ script.js gesetzt ist, aber anscheinend können Sie RequireJS verwenden, also würde ich beide verwenden. – floribon

Antwort

15

Sie benötigen sowohl ocLazyLoad als auch RequireJS, weil Sie jetzt mit zwei separaten Modulkonzepten arbeiten - Ihren Javascript-Modulen und den eckigen internen Modulen.

Nach dem ersten Bootstrapping erlaubt angularjs keine neue Module und Komponenten wie Direktiven und Controller mehr zu registrieren (zumindest nicht den Standard Weg).

RequireJS nur Lasten JavaScript-Dateien, aber es nicht den neuen Winkel Module und Komponenten in diesem neuen Code

Was ocLazyLoad tut sich registrieren ist, damit Sie Ihre zusätzliche Dateien mit einem Drittanbieter-Modul-Loader wie RequireJS laden und das wichtigere Ding - es registriert in eckigen die neuen Module und die Komponenten im lazy geladenen Code.

Zusammenfassend - Sie können Code nur mit RequireJS laden, aber Sie können angulare Module und Komponenten nicht nur mit RequireJS laden. Es besteht ein Bedarf an zusätzlicher Arbeit, wie dies von ocLazyLoad durchgeführt wird.

+2

Oclazyload Ladeelemente selbst nicht? Warum beide verwenden, wenn Sie nur oclazyload verwenden können? – rebelliard

+0

Sie müssen nicht. Aber die Frage ist eine gegen die andere. –

30

Sie können RequireJS mit ocLazyLoad verwenden, aber ich empfehle es nicht, es ist nur möglich, weil die Leute mich gebeten haben, es zu tun, und es war einfach zu integrieren. Sie benötigen kein RequireJS, da ocLazyLoad eigene Loader für js/css/templates-Dateien enthält und beliebige Dateien, nicht nur eckige Module, laden kann.

Wenn Sie angulare Module lazy laden möchten, benötigen Sie eine Lib, um sie mit Angular zu registrieren (oder warten Sie mit Angular 1.5, damit Sie es tun können).

Unterm Strich ist: Sie können RequireJS verwenden mit ocLazyLoad, oder einfach nur ocLazyLoad (empfohlen), aber man kann nicht nur, dass RequireJS

+0

Große Erklärung. Aber ich hatte Zweifel bei der Implementierung von Oclazyload. Mit oclazyload ist es einfach zu laden. wenn kommt, um Abhängigkeiten zu laden, in erfordern js, wenn ich Deps in Shim erwähnte, wird es automatisch die Abhängigkeit laden. Aber in oclazyload, muss ich manuell jede Abhängigkeit für jedes Routing erwähnen. Gibt es einen Code, der wie requirjs zum Laden von Abhängigkeiten wiederverwendet wird? –

+0

Gibt es einen Abhängigkeitsmanager? –

+0

Ich denke, benötigt Abhängigkeiten beibehalten. Es ist einfach, im Code für Abhängigkeiten zu führen. OcLazyLoad mit requirejs wird besser zu mange Code und zur Wiederverwendbarkeit geben. –

Verwandte Themen