Effizienz von Browserify mit mehreren Bundles

8

Ich bin neu bei Browserify und ich versuche herauszufinden, wie ich es effizienter machen kann, wenn es darum geht, wie viel der Client herunterladen muss.

Ich habe eine Web-App, die viele verschiedene Bibliotheken von Drittanbietern und benutzerdefinierten Code verwendet. Mit Browserify scheint es so zu sein, dass die allgemeine Herangehensweise darin besteht, alles in ein großes bundle.js zu verpacken. Dies scheint mir aus mehreren Gründen schrecklich ineffizient zu sein:

Nehmen wir an, Ihr bundle.js enthält lib1, lib2, lib3, customLib .

  1. Wenn ein Teil Ihrer Web-App nur lib1 benötigt, muss der Client noch eine riesige bundle.js herunterladen und es werden nicht 75% davon verwendet. Verschwendet Bytes heruntergeladen. Unnötig erhöhte Seitenladezeit.
  2. Wenn Ihr customLib ein Stück Code ist, mit dem Sie häufig arbeiten, müssen Ihre Kunden jedes Mal, wenn sie sich ändert, bundle.js erneut herunterladen und wieder eine Tonne Bibliotheken von Drittanbietern herunterladen, die sich nicht geändert haben ...

Andere Teile Ihrer Web-App verwenden möglicherweise lib2 und lib3 , aber der Client kann oder wird möglicherweise nie dorthin gehen, in dem er definitiv Bandbreite verschwendet, indem er die gesamte bundle.js herunterlädt.

Ich habe Vorschläge gesehen, wie Sie Ihr Paket in mehrere Pakete aufteilen können. Aber zu welchem ​​Zweck? Wenn eine Seite lib1 verwendet, verwendet eine andere Seite lib1 und lib2 und eine andere Seite lib2 und lib3 , und wie teilt man sie auf? Je mehr Sie es in mehrere Bündel aufteilen, kommen Sie nicht von den Vorteilen von bundle.js weg?

Browserify scheint hoch angesehen zu sein, also hoffe ich, dass ich hier etwas verpasse. Was ist der richtige Ansatz, um viele Bibliotheken und benutzerdefinierte Skripte zusammen zu bündeln? Die Leute rufen einen Browsersuchlauf auf, aber jeder Skriptlader, den ich in der Vergangenheit gesehen habe (wie yepnope etc), benutzt Logik, um zu bestimmen, welche Skripte heruntergeladen werden sollen der Kunde alles herunterladen ...

    
Jake Wilson 03.01.2015, 01:17
quelle

2 Antworten

7

Nicht sicher, ob die Antwort gut zum SO-Format passt. Aber trotzdem ...

Partitionierungsabschnitt des Handbuchs beschreibt 2 folgende Techniken

  1. factor-bundle faktorisiert 2 oder mehr Einstiegspunkte, die gemeinsame Abhängigkeiten in einem einzigen Paket zusammenfassen.

  2. Partitions-Bundle wie Faktor-Bundle, aber mit Laufzeit-Laden mit async loadjs -Funktion .

Faktorbündel

%Vor%

Partitions-Bundle mit asynchronem Lade-Fallback

%Vor%     
Yury Tarabanko 03.01.2015, 02:41
quelle
1

Substack hat diesen Kern veröffentlicht, in dem erklärt wird, wie Bundles aufgeteilt werden. Er schlägt vor, factor-bundle wie folgt zu verwenden:

%Vor%     
mantoni 03.01.2015 12:03
quelle