Dies kann eine dumme Frage für Web-Leute sein. Aber ich bin etwas verwirrt darüber. Jetzt habe ich eine Anwendung, in der ich einige Javascript-Dateien verwende, um verschiedene Aufgaben auszuführen. Nun, ich bin mit Javascript Bündler zu kombinieren und alle Dateien minify. Zur Laufzeit gibt es also nur eine app.min.js-Datei. Jetzt wird Requirejs verwendet, um Module oder Dateien zur Laufzeit zu laden. Die Frage ist also, wenn ich bereits alle Dinge in einer Datei habe, brauche ich dann requirejs? Oder was ist ein Anwendungsszenario, in dem ich requirejs und / oder bundler verwenden kann?
Bitte lassen Sie mich wissen, wenn weitere Details benötigt werden.
javascript
requirejs
servicestack
Kunjee
quelle
quelle
Antworten:
Dies ist ein heiß umkämpftes Problem unter vielen erfahrenen Javascript-Entwicklern. Viele andere Sprachen haben eine "Kompilierungs" -Phase, in der das gesamte Programm für die Bereitstellung gebündelt wird (JBoss '.WAR-Dateien fallen mir ein). Programmierer mit traditionelleren Hintergründen bevorzugen diesen Ansatz häufig.
Javascript hat in den letzten Jahren ein derartiges Wachstum verzeichnet, dass es schwierig ist, genaue Best Practices zu ermitteln. Diejenigen, die die funktionalere Natur von Javascript zu schätzen wissen, bevorzugen jedoch häufig den Ansatz zum Laden von Modulen (wie bei require.js verwendet).
Ich habe Frame.js geschrieben, das ähnlich wie require.js funktioniert, daher tendiere ich zum Modul-Loader-Ansatz.
Um Ihre Frage direkt zu beantworten, ja, es ist das eine oder andere.
Die meisten, die dafür argumentieren, Ihre Skripte in eine einzige Datei zu packen, glauben, dass dies mehr Komprimierung ermöglicht und somit effizienter ist. Ich glaube, die Effizienzvorteile des Verpackens sind in den meisten Fällen vernachlässigbar, weil: (1) die Ladezeiten der Module über die gesamte Sitzung verteilt sind, (2) einzelne Module auf nahezu den gleichen Prozentsatz komprimiert werden können, (3) einzelne Module zwischengespeichert werden können Der Server und die Router getrennt, und (4) das Laden von Skripten nur dann, wenn sie benötigt werden, ermöglicht es Ihnen letztendlich, für einige Benutzer weniger Code und insgesamt mehr Code zu laden.
Wenn Sie auf lange Sicht einen Vorteil beim dynamischen Laden von Skripten sehen, verwenden Sie ihn. Wenn nicht, bündeln Sie Ihre Skripte in einer einzigen Datei.
quelle
Im Allgemeinen verwenden Sie RequireJS nur während der Entwicklung in seiner Ladeform. Sobald die Site fertig und bereit für die Bereitstellung ist, minimieren Sie den Code. Der Vorteil hierbei ist, dass RequireJS genau weiß, was Ihre Abhängigkeiten sind, und daher den Code leicht in der richtigen Reihenfolge minimieren kann. Folgendes steht auf der RequireJS-Website :
quelle
Das hängt von Ihrer Bewerbung ab. Wenn Sie eine serverseitige App mit nur bescheidenem Javascript (weniger als 100 KB minimiert) erstellen, dann entscheiden Sie sich wahrscheinlich für eine vollständige Bündelung.
Aber wenn Sie eine Javascript-App erstellen und eine Menge Code darin haben, werden Ihre Anforderungen anders sein.
Zum Beispiel bündle ich in meiner App alle Kerndateien. Es gibt jQuery, Unterstrich, Backbone, meine Haupt-App-Dateien, mein Benutzer-Anmeldesystem, mein Layout-System, meine Benachrichtigungen und mein Chat-System. Alle sind Teil meiner großen Anfangsdatei.
Aber ich habe auch viele andere Module, die nicht Teil des ursprünglichen Bundles sind und danach geladen werden.
Die Foren, das Wiki, das Wysiwyg, der Farbwähler, Drag & Drop, der Kalender und einige Animationsdateien gehören zur zweiten Kategorie. Sie müssen vernünftige Entscheidungen darüber treffen, was häufig verwendet und sofort benötigt wird und was verzögert werden kann.
Wenn ich alles sofort einbinde, kann ich über eine Meg von Javascript hinausgehen, was verrückt wäre und den anfänglichen Start inakzeptabel langsam machen würde.
Die zweite Kategorie wird heruntergeladen, nachdem ein
initSuccess
Ereignis aus der ursprünglichen Datei ausgelöst wurde.Die zweite Kategorie ist jedoch intelligenter als die erste, da sie das lädt, was zuerst wichtiger ist. Wenn Sie sich beispielsweise das Wiki ansehen, wird das Wiki geladen, bevor der Farbwähler geladen wird.
quelle