Offizielles Release von jQuery 4
(blog.jquery.com)- Mit einem Major-Version-Update nach rund 10 Jahren wurde jQuery 4.0.0 offiziell veröffentlicht
- Support für IE 10 und älter sowie alte Browser eingestellt, Code verschlankt und Einhaltung moderner Standards verbessert; die meisten Nutzer können ohne Codeänderungen upgraden
- Umstellung auf eine ES-Modul-basierte Struktur mit Einführung von Rollup-Builds für Kompatibilität mit modernen Entwicklungsumgebungen
- Unterstützung für Trusted Types und CSP hinzugefügt, um Konflikte mit Sicherheitsrichtlinien zu minimieren
- Entfernung veralteter APIs und Verkleinerung des Slim-Builds für bessere Performance und Wartbarkeit
Wichtiger Überblick zu jQuery 4.0.0
- jQuery 4.0.0 ist ein großes Major-Release nach rund 10 Jahren, das nach einem langen Entwicklungszyklus und mehreren Pre-Releases fertiggestellt wurde
- Die meisten Nutzer können ohne Codeänderungen upgraden
- Legacy-Code und nicht öffentliche Parameter, die sich in früheren Versionen angesammelt hatten, wurden entfernt
- Ein Upgrade-Guide und das jQuery-Migrate-Plugin werden zusammen bereitgestellt, um den Umstieg von früheren Versionen zu unterstützen
- Die Distribution ist über das offizielle CDN und npm möglich; andere CDNs sollen nach und nach aktualisiert werden
Änderungen bei der Browser-Unterstützung
- Support für IE 10 und älter eingestellt, IE 11 soll mit jQuery 5.0 schrittweise entfernt werden
- Support für Edge Legacy, alte iOS-Versionen (älter als die letzten 3 Versionen), alte Firefox-Versionen (älter als die letzten 2 Versionen) und den Android Browser eingestellt
- Wenn alte Browser weiterhin unterstützt werden müssen, wird empfohlen, jQuery 3.x weiter zu verwenden
Kompatibilität mit Trusted Types und CSP
- Unterstützung für Trusted Types hinzugefügt, damit TrustedHTML-Objekte sicher verarbeitet werden können
- Die meisten asynchronen Skript-Anfragen wurden auf tag-basiert umgestellt, um CSP-Fehler zu vermeiden
- Bei Verwendung der Option
"headers"kann weiterhin XHR genutzt werden, empfohlen wird jedoch die Nutzung vonscriptAttrs
- Bei Verwendung der Option
Umstellung auf ES-Module
- Der jQuery-Quellcode wurde vollständig von AMD auf ES-Module migriert
- Statt RequireJS wird nun Rollup als Build-Tool eingesetzt
- Tests werden separat auf ES-Modul-Basis ausgeführt
- Über `` wird Kompatibilität mit modernen Browsern und Build-Tools sichergestellt
Entfernung veralteter APIs
- APIs, die schon lange als veraltet galten, wurden vollständig entfernt
- Entfernte Funktionen:
jQuery.isArray,jQuery.parseJSON,jQuery.trim,jQuery.type,jQuery.now,jQuery.isNumeric,jQuery.isFunction,jQuery.isWindow,jQuery.camelCase,jQuery.nodeName,jQuery.cssNumber,jQuery.cssProps,jQuery.fx.interval - Ersatz: Nutzung nativer Methoden wie
Array.isArray(),JSON.parse(),String.prototype.trim(),Date.now()usw.
- Entfernte Funktionen:
- Zusammen mit der Entfernung von IE-bezogenem Code verringerte sich die Größe um etwa 3 KB (gzip)
Entfernung interner Methoden
- Die nur intern verwendeten Methoden push, sort, splice wurden aus dem jQuery-Prototyp entfernt
- Statt
$elems.push(elem)kann die Form[].push.call($elems, elem)verwendet werden
- Statt
Geänderte Reihenfolge von Fokus-Ereignissen
- Vereinheitlichung auf die Fokus-/Blur-Ereignisreihenfolge gemäß W3C-Spezifikation
- Neue Reihenfolge: blur → focusout → focus → focusin
- Da sie sich von der bisherigen jQuery-Reihenfolge unterscheidet, ist Vorsicht bei der Kompatibilität nötig
- In allen Browsern außer IE gilt dieselbe Reihenfolge
Verbesserungen am Slim-Build
- Durch die Entfernung von Deferreds und Callbacks wurde die Dateigröße auf etwa 19,5 KB (gzip) reduziert
- Da die meisten Browser native Promises unterstützen, ist ein Ersatz möglich
- Falls Unterstützung für IE11 nötig ist, wird der Main-Build oder ein Promise-Polyfill empfohlen
- Der Slim-Build ist etwa 8 KB kleiner, da Module rund um Ajax und Animation ausgeschlossen sind
Download und Distribution
- Download über das offizielle CDN und npm möglich
- npm-Installationsbefehl:
npm install jquery@4.0.0
Mitwirkende und 20-jähriges Jubiläum
- Zahlreiche Open-Source-Mitwirkende beteiligten sich mit Patches, Bug-Reports und Tests
- Zum 20-jährigen Jubiläum von jQuery gab es ein Team-Reunion in Dallas, an dem auch Gründer John Resig per Zoom teilnahm
Zusammenfassung der wichtigsten Codeänderungen (Changelog)
- Ajax: Verbesserte Verarbeitung binärer Daten, Vermeidung von CSP-Fehlern, robusteres JSONP-Fehler-Handling
- CSS: Korrektur der Größenberechnung für ``-Elemente, verbesserte Behandlung von Leerzeichen in CSS-Variablen, Entfernung des
opacity-Hooks - Core: Umstellung
AMD → ES-Module, Nutzung vonDOMParser, Entfernung von Code für alte Browser - Event: Native Verarbeitung von focus-/blur-Events, Entfernung des
event.which-Shims - Selector: Integration von Sizzle, Verbesserungen bei
:hasund:even/:odd, Hinzufügen vonuniqueSort-Chaining - Docs: Aktualisierung auf HTTPS-Links, Überarbeitung der Dokumente README und CONTRIBUTING
- Release: Automatisierung von Build- und Distributionsprozessen, Umstellung auf
release-it
Zusammenfassung
- jQuery 4.0.0 ist eine strukturell überarbeitete Version für moderne Webstandards und Sicherheitsrichtlinien
- Entfernung von Legacy-Code, ES-Modularisierung, mehr Sicherheit und geringere Größe stärken die Basis für die langfristige Wartung
- Das Release gilt als symbolische Veröffentlichung zum 20-jährigen Jubiläum des jQuery-Ökosystems
3 Kommentare
Ein bewegendes 20-jähriges Jubiläum. Inzwischen gibt es zwar kaum noch Gelegenheiten, es zu verwenden, aber ich hoffe, dass es vor Ort weiterhin als nützliches Werkzeug geschätzt wird.
Erstaunlich zählebig … haha
Hacker-News-Kommentare
Dazu passend gibt es einen guten Artikel darüber, wie man jQuery in Legacy-Codebasen reaktiv einsetzen kann, wenn moderne Frameworks nicht infrage kommen.
Reactive jQuery for Spaghetti-fied Legacy Codebases
Wenn man jQuery aus Legacy-Gründen einsetzen muss, kann Backbone ein guter Zwischenschritt sein, bevor man auf ein modernes Framework umsteigt.
BackboneJS-Website, GitHub-Tag-Liste
Tatsächlich war überengineerter React-Code manchmal schlechter als sauber strukturierter jQuery-Code.
React hat die Qualitätsmaßstäbe zwar angehoben, aber manchmal ist es effizienter, vertraute Werkzeuge passend einzusetzen.
Besonders für Dinge wie Userscripts, bei denen der Problemumfang klein ist und ein Build-Step lästig wäre, passt das gut.
Eigentlich lässt sich das auch ohne jQuery allein mit
querySelector,addEventListenerundinnerHTMLumsetzen.Ich musste zwangsweise ein benutzerdefiniertes Such-Frontend in Joomla CMS hineinpressen, und es funktionierte ziemlich gut.
Genau so machen wir es bei Reactive Mastro.
jQuery ist immer noch eine meiner Lieblingsbibliotheken.
Es ist ein Werkzeug, das meine Karriere geprägt hat, deshalb habe ich immer eine besondere Zuneigung dazu.
Die Kombination aus jQuery + jQuery UI + Plugins + AI hätte meiner Meinung nach enormes Potenzial.
Immer wenn von HTMX die Rede ist, denke ich: „Lässt sich das nicht einfach mit drei Zeilen jQuery machen?“
Jedenfalls hat jQuery immer Probleme für mich gelöst, und das ist es, worauf es ankommt.
.load()inspiriert war.Siehe jQuery.load()-Dokumentation
Ich habe das bei Performance-Arbeiten entdeckt, und mein Respekt für jQuery ist dadurch nur noch größer geworden.
$()-Selektor-Interfaces war immer noch kaum zu übertreffen.Leistungsunterschiede ließen sich womöglich durch Vorberechnung ausgleichen.
Das ist einfach und kann sich trotzdem fast wie eine SPA anfühlen.
Good ol’ jQuery, ich bin wirklich dankbar dafür.
Es freut mich zu sehen, dass jQuery immer noch gepflegt und aktualisiert wird.
Aber irgendwie macht mich das auch traurig, denn das heißt wohl, dass React vielleicht ebenfalls bis 2060 überlebt.
Wenn ich an die frühere Callback-Hölle denke, wirkt die Gegenwart fast traumhaft.
In den 2000er- und 2010er-Jahren, als SPA-Frameworks noch nicht alltäglich waren, habe ich Webentwicklung ebenfalls mit jQuery gelernt.
Ein großer Teil dessen, was ich damals gebaut habe, läuft wahrscheinlich noch heute.
An das jQuery-Team geht mein Dank.
Glückwunsch an alle, die an der jQuery-4.0-Veröffentlichung beteiligt waren.
Wer einen stärker strukturierten Ansatz sucht, kann sich JsViews ansehen, ein reaktives Templating-System.
Es ist alt und stabil, hat aber nie so viel Aufmerksamkeit bekommen wie moderne Frameworks.
Ich persönlich mag moderne jQuery-artige Ansätze wie cheerio und alpine.js.
cheerio.js.org, alpinejs.dev
Das Seitendesign wirkt allerdings so veraltet, dass das die Verbreitung vermutlich bremst.
Dafür lädt es schnell, und die Leichtgewichtigkeit ist beeindruckend.
jsrender.min.jsist nur 12.82kB groß.Kaum zu glauben, aber jQuery 4.0 unterstützt weiterhin IE11.
Das soll erst in jQuery 5.0 endgültig entfernt werden.
Siehe zugehöriger PR und Issue
Wenn man bedenkt, dass 3.0 vor zehn Jahren erschienen ist, ist das ziemlich erstaunlich.
Es ist dankenswert, dass solche Nutzer und Produkte weiterhin unterstützt werden.
Es gibt immer noch viele Schulcomputerräume, die mit alten Systemen arbeiten.
Der Aufwand, der in das Upgrade-Tool von jQuery geflossen ist, ist wirklich beeindruckend.
Ich liebe die Chaining-Syntax von jQuery immer noch.
Vor 15 Jahren habe ich ein jQuery-Tutorial auf Französisch geschrieben, das viele Aufrufe bekommen hat.
Ich hoffe, ich habe damit wenigstens ein kleines bisschen zur Verbreitung von jQuery beigetragen.