Was sind die Unterschiede zwischen normalem und schlankem Paket von jquery?

435

Bei CDNJS wird das Paket jquery.slim platziert. Es hat eine kleinere Größe. Was sind die Hauptunterschiede zu einem Original? Ein kurzer Blick auf den Code brachte keine Antwort, und auf jquery.com habe ich keine Referenz zum slimPaket gefunden.

Was sind die Unterschiede zwischen jquery.js und jquery.slim.js?

SynCap
quelle
Meiner Ansicht nach haben Sie eine mittelmäßige Antwort akzeptiert und sollten dies ändern.
Robert Siemer
@RobertSiemer mag sein, aber Stimmen von hundert Völkern zeigen meiner Ansicht nach die Aktualität zeitlich sehr deutlich. Die akzeptierte Antwort war vollständig und zeitnah und gab jetzt immer noch die kurze, schnelle und nützliche Lösung.
SynCap
Ich stimme dir überhaupt nicht zu. Stimmen zu akzeptierten Antworten zeigen nichts im Vergleich zu anderen Antworten unten (und das sollten Sie wissen). Und was auch immer die Antwort in der Zeit getan hat, ist für eine öffentliche Q / A-Website völlig irrelevant. Die Leute kommen jetzt hierher und brauchen die bestmögliche Antwort. Weiter: Bhojendra Rauniyar kann ganz auf diese 15 Wiederholungen verzichten. Punkte.
Robert Siemer
Die absolute Anzahl der Abstimmungen ist ein besserer Indikator für die Qualität im Vergleich zu anderen Antworten. - Ich habe gerade festgestellt, dass die zweite Antwort tatsächlich die am meisten gewählte ist, daher gibt es nicht viel mehr zu sagen.
Robert Siemer

Antworten:

296

Beim Betrachten des Codes habe ich die folgenden Unterschiede zwischen jquery.js und jquery.slim.js festgestellt:

In der Datei jquery.slim.js werden die folgenden Funktionen entfernt:

  1. jQuery.fn.extend
  2. jquery.fn.load
  3. jquery.each // Fügen Sie eine Reihe von Funktionen zur Behandlung allgemeiner AJAX-Ereignisse hinzu
  4. jQuery.expr.filters.animated
  5. Ajax-Einstellungen wie jQuery.ajaxSettings.xhr, jQuery.ajaxPrefilter, jQuery.ajaxSetup, jQuery.ajaxPrefilter, jQuery.ajaxTransport, jQuery.ajaxSetup
  6. XML-Analyse wie jQuery.parseXML,
  7. Animationseffekte wie jQuery.easing, jQuery.Animation, jQuery.speed
Bhojendra Rauniyar
quelle
6
In der 3.x-Slim-Quelle wird immer jQuery.fn.extendnoch verwendet, um Methoden zu umschlossenen Sets hinzuzufügen. Haben Sie sich in # 1 auf etwas anderes bezogen?
Cantera
39
Bemerkenswert ist, dass Bootstrap 4 auf die jQ Slim-Version abzielt. Animationen sind wahrscheinlich der größte Bruchpunkt, aber die meisten von ihnen können mit CSS3 trotzdem besser und schneller durchgeführt werden.
Josh Habdas
3
Was hast du mit "jQuery.each" gemeint? jQuery.each wurde nicht in jQuery 3 slim entfernt
Chris Moschini
18
Vielleicht möchten Sie die Antwort bearbeiten, um dies anders auszudrücken - jquery.each hier in einer Liste der entfernten Elemente zu sagen, ist verwirrend.
Chris Moschini
1
Funktionen wie slideUp, slideDown funktionieren auch nicht mit der Slim-Version.
Usman Arshad
316

Die kurze Antwort aus der Ankündigung der endgültigen Veröffentlichung von jQuery 3.0 :

Zusammen mit der regulären Version von jQuery, die die Ajax- und Effektmodule enthält, veröffentlichen wir eine „schlanke“ Version, die diese Module ausschließt. Alles in allem sind Ajax, Effekte und derzeit veralteter Code nicht enthalten.

Die Dateigröße (gzipped) ist ca. 6k kleiner, 23,6k vs 30k.

Jannie Theunissen
quelle
40

Derzeit scheint die maßgeblichste Antwort in dieser Ausgabe zu sein , in der es heißt: "Es handelt sich um eine benutzerdefinierte Version von jQuery, die Effekte, Ajax und veralteten Code ausschließt." Details werden mit jQuery 3.0 bekannt gegeben.

Ich vermute, dass der Grund für den Ausschluss dieser Komponenten der jQuery-Bibliothek darin besteht, das zunehmend verbreitete Szenario zu erkennen, dass jQuery in Verbindung mit einem anderen JS-Framework wie Angular oder React verwendet wird. In diesen Fällen wird jQuery hauptsächlich zum Durchlaufen und Bearbeiten von DOMs verwendet. Wenn Sie also die Komponenten weglassen, die entweder veraltet sind oder vom Framework bereitgestellt werden, wird die Dateigröße um etwa 20% reduziert.

gxclarke
quelle
10
Kann auch von Entwicklern verwendet werden, die moderne Funktionen verwenden, z. B. fetch()einen modernen Ersatz für XMLHttpRequest(AJAX).
Fred
25

Der jQuery-Blog, jQuery 3.1.1 veröffentlicht! sagt

Schmales Gebäude

Manchmal benötigen Sie kein Ajax, oder Sie bevorzugen eine der vielen eigenständigen Bibliotheken, die sich auf Ajax-Anforderungen konzentrieren. Und oft ist es einfacher, eine Kombination aus CSS und Klassenmanipulation für alle Ihre Webanimationen zu verwenden. Zusammen mit der regulären Version von jQuery, die die Ajax- und Effektmodule enthält, haben wir eine „schlanke“ Version veröffentlicht, die diese Module ausschließt. Alles in allem sind Ajax, Effekte und derzeit veralteter Code nicht enthalten. Die Größe von jQuery ist heutzutage sehr selten ein Problem mit der Ladeleistung, aber der schlanke Build ist etwa 6 KByte kleiner als die reguläre Version - 23,6 KByte gegenüber 30.000 KByte.

ChrisW
quelle
17

Ich konnte sehen $.ajax, dass aus jQuery slim 3.2.1 entfernt wurde

Aus den jQuery- Dokumenten

Sie können auch den schlanken Build verwenden, der die Ajax- und Effektmodule ausschließt

Unten ist der Kommentar aus der schlanken Version mit den entfernten Funktionen

/*! jQuery v3.2.1 -ajax,-ajax/jsonp,-ajax/load,-ajax/parseXML,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-event/ajax,-effects,-effects/Tween,-effects/animatedSelector | (c) JS Foundation and other contributors | jquery.org/license */
kiranvj
quelle
Was ist die Alternative zu $ ​​.ajax?
Zyo
2
@Zyo verwendet entweder das xmlhttprequest-Objekt in einfachem JavaScript oder die normale jQuery-Version.
Kiranvj
Die Fetch-API ist nativ und sehr leistungsfähig. developer.mozilla.org/en-US/docs/Web/API/Fetch_API Hier
erfahren
@ Octavioamu Abrufen ist eine Option, benötigt aber möglicherweise eine Polyfüllung, die auf unterstützenden Browsern basiert
kiranvj
5

Wie bereits erwähnt, wurden die Ajax- und Effektmodule von jQuery slim ausgeschlossen. Der Größenunterschied ab 3.3.1 für die entpackte minimierte Version beträgt 85.000 gegenüber 69.000 (16.000 für Slim) oder 30vs24 für komprimierte Dateien. Es ist wichtig zu beachten, dass Bootstrap 4 verwendet die schlanke jQuery also, wenn jemand die Vollversion will, muss er das stattdessen aufrufen

Yehuda Schwartz
quelle