Warum haben Browser jQuery nicht installiert?

19

Ich verwende jQuery auf mehreren meiner Websites, und obwohl ich ein CDN verwende, um es bereitzustellen, ist es für Besucher einfach nicht sinnvoll, jQuery jedes Mal herunterzuladen. jQuery muss das weltweit am häufigsten verwendete JavaScript-Framework sein. Wäre es nicht sinnvoller, wenn Browser es standardmäßig installieren würden?

Auf diese Weise könnte ein Download von jQuery millionenfach am Tag verhindert werden. Entweder von den eigenen Websites oder von den CDNs.

Alles, was wirklich benötigt würde, ist eine Art if-Anweisung wie:

 <!--[if jQuery gt 11]>

Gibt es etwas, das mir dabei hilft, Benutzer daran zu hindern, zum CDN zu gelangen, wenn sie jQuery bereits von einer anderen Site aus in ihrem Cache haben?

user1914292
quelle
3
Die Frage ist: Warum muss ein Benutzer für etwas, das er bereits hat, neue Downloads von Websites oder CDNs durchführen? jQuery wird von vielen Standorten und in vielen Versionen bereitgestellt. Ich mache mir Sorgen um die Seitengeschwindigkeit und die Benutzer sind besorgt über die Bandbreite (insbesondere für Mobilgeräte). Wenn es einen Goldstandard für eine Bibliothek gibt - warum nicht? Es gibt sicher noch andere Beispiele und ich würde diese auch begrüßen - solange es einen vereinbarten Standard für sie gibt (wie eine Versionsnummer).
user1914292
27
Warum jQuery, aber nicht Angular, MooTools, Underscore, ...? Und welche Versionen von jedem? Sollten Browser Kopien aller jemals erstellten JavaScript-Bibliotheken enthalten?
user253751
15
"Entschuldigung, Sie können meine Website nicht nutzen, bis Sie auf eine 0.1 höhere Version Ihres Browsers
upgraden
4
Relevant
Charlie
4
Caching ist dafür gemacht. Andernfalls wäre das Versionshandling grundsätzlich unmöglich
njzk2

Antworten:

55

Wenn Sie jQuery über ein beliebtes CDN wie die von Google gehosteten Bibliotheken oder cdnjs bereitstellen , wird es nicht erneut heruntergeladen, wenn sich Ihr Besucher auf einer Site befunden hat, die auf jQuery aus derselben Quelle verwiesen hat (solange die zwischengespeicherte Version nicht abgelaufen ist).

Wie Sie bereits sagten, ist jQuery eine beliebte Bibliothek, aber das Bündeln mit dem Browser ist aus verschiedenen Gründen unwahrscheinlich:

  1. jQuery ist relativ klein (im Vergleich zu Bibliotheken, die manchmal in Browsern wie Flash gebündelt sind). Es ist unwahrscheinlich, dass der Download von jQuery zu den größten Leistungsengpässen auf einer durchschnittlichen Website führt.
  2. Verbesserungen an JavaScript / ECMAScript führen dazu, dass Entwickler zunehmend nicht mehr auf jQuery angewiesen sind. (Siehe youmightnotneedjquery.com .)
  3. Es gibt sehr viele andere beliebte JavaScript-Bibliotheken. Browser sind nicht als Repository für JavaScript-Code konzipiert. Das Verfolgen der Beliebtheit von Skripten, das Löschen weniger beliebter Bibliotheken und das Aktualisieren aller Informationen sollten Webentwicklern einzelner Websites überlassen werden.
Nick
quelle
Ich verstehe das, aber ich benutze jetzt code.jquery.com als CDN. Wenn jedoch eine andere Website googleapis oder cdjns verwendet, lädt der Browser JQuery erneut von dieser anderen CDN herunter. Das macht einfach keinen Sinn und kostet viel Zeit / Bandbreite auf der ganzen Welt. Wenn Sie hinzufügen, dass in den meisten Fällen Leute etwas wie jQuery1.7 + möchten, dann wird es noch schlimmer. Ich verstehe, dass es sich bei Ihren Browsern nicht um Repositories handelt, aber könnten wir uns nicht eine Art Regel über "Cache aus mehreren Quellen" ausdenken?
user1914292
24
@ user1914292 Dies wäre nur dann nützlich, wenn auf allen Browsern alle jQuery-Versionen vorhanden wären und wenn Anforderungen an eine bekannte Quelle von jQuery abgefangen und durch die zwischengespeicherte Version ersetzt würden. Wenn es überhaupt einen winzigen Unterschied gibt, kann dies zu Fehlern führen, die nicht behoben werden können. Erschwerend kommt hinzu, dass das Web-Caching funktioniert und seit Jahrzehnten funktioniert. Ihr Browser ist nicht das einzige, was diese jQuery-Anforderungen zwischenspeichert - viele Router auf dem Weg zu Ihrem Browser tun dasselbe. Das Problem wurde schon vor langer Zeit gelöst, wenn die Bandbreite tut Sache :)
Luaan
4) Was ist, wenn der JQuery-Code auf einer bestimmten Site von einer Funktion abhängt, die in einem kürzlich durchgeführten Update grundlegend geändert wurde, und nicht mehr die Funktion erfüllt, die der Code von ihm erwartet?
Shadur
1
@Ejay nein, es funktioniert nicht als Verfolgungsmechanismus, da die Anfrage zu 99% von Ihrem Browser-Cache aus bedient wird.
Suriv
1
@BenSteward Ja, verwenden Sie die Entwicklertools Ihres Browsers und überprüfen Sie die Netzwerkanzeige . Chrome zeigt beispielsweise zwischengespeicherte Ressourcen mit "Festplatten-Cache" oder "Speicher-Cache" in der Spalte "Größe" und einem Ghost-Wert in der Spalte "Status" an (sofern Sie nicht über "Cache deaktivieren" verfügen (während DevTools ist offen) ”in den Einstellungen der Entwicklerwerkzeuge aktiv). Es kann von Cache-Steuerelement-Headern und anderen Faktoren abhängen, was und wie lange zwischengespeichert wird. developer.mozilla.org/en-US/docs/Web/HTTP/Caching
Nick
21

JQuery ist nicht nur die einzige beliebte JS-Bibliothek, ein Browser muss möglicherweise auch mehrere Versionen enthalten. Das Google CDN listet derzeit Folgendes auf: 42 Versionen von jQuery; 44 Versionen von jQuery UI; 6 Versionen von jQuery Mobile.

Es ist besser, Web-Entwicklern zu erlauben, basierend auf den Anforderungen ihrer Website zu definieren, welche Version einer Bibliothek heruntergeladen werden soll. Wenn Sie eine aktuelle Produktionsversion von jQuery auf Ihrer Website verwenden und diese von einem bekannteren CDN laden, besteht eine gute Chance, dass Ihre Besucher sie ohnehin bereits zwischengespeichert haben.

Andrew Lott
quelle
14

Der Browser ist der Motor. Es ist nicht die Aufgabe des Motorenentwicklers, herauszufinden, welche Art von Kraftstoff und zusätzlichen Teilen Sie in Ihr Auto einbauen und für Sie einbeziehen. Wenn sie dies tun würden, wäre der Browser eine riesige Bloatware, da die nächste Frage "Warum nur jQuery?" Lautet und wir am Ende Abhängigkeits-Repositorys pflegen würden.

Werden wir auch alle Versionen aufnehmen? Was ist, wenn jemand eine benutzerdefinierte Version verwenden möchte? Was ist, wenn jemand diese Bibliothek nicht nutzen möchte? Wie oft werden sie die neuesten Releases zusammenführen und rollen? Werden wir unterschiedliche Browser mit unterschiedlichen versionierten jQuerys haben? Sie können nicht einmal standardisierte HTML-, CSS- und JavaScript-Funktionen gleichermaßen implementieren. Was ist, wenn einer der Browser-Betreuer keine Bibliothek oder eine bestimmte Version enthält?

Browser bieten Bausteine ​​und eine Umgebung, in der Sie eine noch nicht fertige Lösung erstellen können.

Durch das Einfügen von jQuery in den Browser wird Ihre Website nicht blitzschnell geladen, da dies heutzutage nicht der größte Engpass ist. Wir können uns jedoch darauf einigen, dass jQuery eine unnötig große Bibliothek ist, deren Zweck es jedoch nie war, eine schnelle Bibliothek zu sein (wenn man bedenkt) Bandbreite). Es gibt viele andere Bibliotheken, die speziell für schnelles Laden und geringes Gewicht wie Zepto entwickelt wurden .

Wenn Sie sich wirklich Gedanken über die Größe und die Bandbreitennutzung von jQuery machen, verwenden Sie es nicht. Haben Sie jemals von Vanilla JS gehört ? Es ist eine noch populärere Bibliothek, die buchstäblich von fast jedem benutzt wird, auch von jQuery selbst! Und es hat Ihren Traum bereits erfüllt, denn es ist in jedem Browser enthalten!

totymedli
quelle
2

Ein Grund für die Verwendung einer Bibliothek wie jQuery ist die Kompatibilität.

Browser sind standardkonformer geworden, aber wenn Sie die jquery-Bibliothek verwenden, müssen Sie sich keine Gedanken mehr über Unterschiede zwischen Browserfamilien und -versionen machen

Indem Sie die JQuery selbst bereitstellen, können Sie sicher sein, dass Sie eine konsistente API haben.

Wenn wir die jquery in den Browser eingebaut haben, müssen Sie überprüfen, welche Version der Benutzer hat, und wir befinden uns wieder im Browserniffing und "Diese Site wird am besten in ...".

Es macht also keinen Sinn, die JQuery in den Browser zu integrieren.

Das Zwischenspeichern funktioniert auch, sodass die jquery-Version nur einmal heruntergeladen werden muss, auch wenn der Benutzer sie noch nicht besitzt.

Lenne
quelle
-3

Ich denke tatsächlich, dass die Antwortenden hier nicht verstehen, dass die Antwort auf die Frage lauten sollte, dass Browser wahrscheinlich die am häufigsten verwendeten Bibliotheken, Polyfills usw. auf der Clientseite einschließen.

Wie die Person, die die Frage stellt, feststellt, können bedingte Kommentare verwendet werden, um sicherzustellen, dass Browsern, die keine Abfrage enthalten, eine geeignete Version bereitgestellt wird.

Jquery enthält auch eine eigene Unterstützung für die Abwärtskompatibilität durch Migration, sodass bedingte Kommentare die Retro-Unterstützung für Personen mit einer Paketversion einer älteren Jquery-Bibliothek ermöglichen, ohne eine vollständig neue Bibliothek herunterzuladen.

Das Argument, diese in Browser einzubeziehen, würde sich nicht nur auf die Benutzererfahrung und die Kosten beziehen, sondern auch auf diesen Planeten, auf dem wir leben. Die Verwendung von Daten ist ein enormer Beitrag zur globalen Umweltverschmutzung, und die Minimierung des unnötigen Datentransfers könnte sich dramatisch auf unseren CO2-Fußabdruck auswirken.

Im Wesentlichen, um ein paar Megabyte zusätzlichen Code hinzuzufügen, der in einem gepackten Browser aufgebläht ist - dieselben Daten werden unnötigerweise milliardenfach am Tag übertragen.

Das verschlechtert die Benutzerfreundlichkeit für alle im Internet. Und kostet Großunternehmen riesige Geldsummen.

Als Entwickler würden Sie einfach die erforderlichen Fallbacks erstellen, wie wir es derzeit für den IE usw. tun. Was ist also das Problem - sollte es wahrscheinlich enthalten sein?

Andy Bbop
quelle
1
Dies ist tangential zu der Frage. Die Frage ist "Warum Browser nicht und was kann ich dagegen tun", nicht "Warum sollten Browser".
Stephen Ostermiller
Während der OP über Ihren Standpunkt nachdenkt, ist er daran interessiert, den Datenverkehr zum CDN zu reduzieren, wenn das Framework bereits im Browser-Cache vorhanden ist, möglicherweise sogar von einer anderen Site. Persönlich kann ich nicht sehen, wie, es sei denn, es gibt einen gemeinsamen Weg, um das Framework zu verweisen.
Closetnoc
Die meisten Leute haben es versäumt, auch die relevanteste Antwort auf die Frage zu sagen, und das ist, dass jQuery kein Webstandard ist und Browser nur Webstandards ausführen, die sich langsam ändern und auf Grundlagen basieren. jQuery wurde ursprünglich erstellt, um sicherzustellen, dass die Grundlagen zwischen den Browsern konsistent funktionieren. Das Einbeziehen von jQuery entspricht dem Einbeziehen eines Patches zum Beheben von Browsern, aber die Browser beheben sich schließlich bereits. Wir sehen bereits, dass die Verwendung von jQuery eingeschränkt ist, was teilweise durch die vielen Artikel belegt wird, die derzeit zum Thema "Sie brauchen jQuery nicht" erscheinen.
Rob
Stephen. Die Frage lautet nicht "Warum keine Browser, und was kann ich dagegen tun". Das ist deine Wiederholung. Die Frage ist, warum sie es nicht tun, und die fragende Person gibt eindeutig an, dass die Schaffung eines neuen Rahmens für den Umgang mit auftretenden Problemen für alle Webbenutzer tatsächlich einen enormen potenziellen Nutzen hätte.
Andy Bbop
Sie alle müssen aufhören, Ihre überholten Vorurteile zu verteidigen und akzeptieren, dass Sie alle noch lernen können. Oh, und lerne auch, etwas zu lesen. # Waffen. "Während das OP über Ihren Standpunkt nachdenkt, ist es daran interessiert, den Datenverkehr zum CDN zu reduzieren". Nein, er sagt, es könnte enorme Mengen an Bandbreite sparen, sei es auf der Client-Seite oder auf der CDN-Seite. Lies den effing Post.
Andy Bbop