Sortie officielle de jQuery 4
(blog.jquery.com)- Environ 10 ans après, mise à jour de version majeure avec la sortie officielle de jQuery 4.0.0
- Fin de la prise en charge d’IE 10 et des navigateurs anciens, allègement du code et renforcement de la conformité aux standards modernes ; la plupart des utilisateurs peuvent effectuer la mise à niveau sans modifier leur code
- Transition vers une structure basée sur les modules ES avec l’adoption de Rollup pour la build, afin d’assurer la compatibilité avec les environnements de développement modernes
- Ajout de la prise en charge de Trusted Types et CSP pour limiter au minimum les conflits avec les politiques de sécurité
- Suppression des API dépréciées et réduction de la build slim pour améliorer les performances et la maintenabilité
Aperçu principal de jQuery 4.0.0
- jQuery 4.0.0 est une grande release majeure publiée après environ 10 ans, aboutie au terme d’un long cycle de développement et de plusieurs préversions
- La plupart des utilisateurs peuvent effectuer la mise à niveau sans modifier leur code
- Suppression du code legacy et des paramètres privés accumulés dans les versions précédentes
- Un guide de migration et le plugin jQuery Migrate sont fournis pour faciliter la transition depuis les versions antérieures
- La distribution est disponible via le CDN officiel et npm ; les autres CDN seront mis à jour progressivement
Changements de prise en charge des navigateurs
- Fin de la prise en charge d’IE 10 et versions antérieures ; IE 11 sera supprimé progressivement avec jQuery 5.0
- Fin de la prise en charge de Edge Legacy, des anciennes versions d’iOS (au-delà des 3 versions les plus récentes), des anciennes versions de Firefox (au-delà des 2 versions les plus récentes) et d’Android Browser
- Si vous devez prendre en charge d’anciens navigateurs, il est recommandé de rester sur jQuery 3.x
Compatibilité Trusted Types et CSP
- Ajout de la prise en charge de Trusted Types pour traiter en toute sécurité les objets TrustedHTML
- La plupart des requêtes de script asynchrones passent désormais par des balises ``, afin d’éviter les erreurs CSP
- En cas d’utilisation de l’option
"headers", XHR reste possible, mais l’usage descriptAttrsest recommandé
- En cas d’utilisation de l’option
Transition vers les modules ES
- Le code source de jQuery a été entièrement migré d’AMD vers les modules ES
- Rollup a été adopté comme outil de build à la place de RequireJS
- Des tests distincts sont exécutés pour la base en modules ES
- `` permet d’assurer la compatibilité avec les navigateurs modernes et les outils de build
Suppression des API dépréciées
- Les API marquées comme non recommandées depuis longtemps ont été totalement supprimées
- Fonctions supprimées :
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 - Remplacements : utiliser les méthodes natives comme
Array.isArray(),JSON.parse(),String.prototype.trim(),Date.now(), etc.
- Fonctions supprimées :
- Avec la suppression du code lié à IE, la taille diminue d’environ 3 Ko en gzip
Suppression de méthodes réservées à l’interne
- Les méthodes push, sort, splice utilisées uniquement en interne ont été retirées du prototype jQuery
$elems.push(elem)peut être remplacé par[].push.call($elems, elem)
Changement de l’ordre des événements de focus
- Uniformisation selon l’ordre des événements focus/blur défini par la spécification W3C
- Nouvel ordre : blur → focusout → focus → focusin
- Cet ordre diffère de l’ancien comportement de jQuery, ce qui nécessite une vigilance de compatibilité
- Tous les navigateurs, sauf IE, suivent déjà cet ordre
Améliorations de la build slim
- Suppression de Deferreds et Callbacks, réduisant la taille du fichier à environ 19,5 Ko (gzip)
- La plupart des navigateurs prenant en charge les Promise natives, elles peuvent servir de remplacement
- Si la prise en charge d’IE11 est nécessaire, il est recommandé d’utiliser la build principale ou un polyfill Promise
- La build slim exclut les modules liés à Ajax et à l’animation, ce qui la rend environ 8 Ko plus légère
Téléchargement et distribution
- Téléchargeable depuis le CDN officiel et npm
- Commande d’installation npm :
npm install jquery@4.0.0
Contributeurs et 20e anniversaire
- De nombreux contributeurs open source ont participé via des correctifs, des rapports de bugs et des tests
- Pour les 20 ans de jQuery, l’équipe s’est retrouvée à Dallas, avec la participation du fondateur John Resig via Zoom
Résumé des principaux changements de code (changelog)
- Ajax : amélioration du traitement des données binaires, prévention des erreurs CSP, renforcement de la gestion des erreurs JSONP
- CSS : correction du calcul de taille des éléments ``, amélioration du traitement des espaces dans les variables CSS, suppression du hook
opacity - Core : transition
AMD → modules ES, utilisation deDOMParser, suppression du code de compatibilité avec les anciens navigateurs - Event : traitement natif des événements focus/blur, suppression du shim
event.which - Selector : intégration de Sizzle, amélioration de
:haset:even/:odd, ajout du chaînageuniqueSort - Docs : mise à jour des liens HTTPS, révision des documents README et CONTRIBUTING
- Release : automatisation du processus de build et de distribution, migration vers
release-it
Résumé
- jQuery 4.0.0 est une refonte structurelle alignée sur les standards du Web moderne et les politiques de sécurité
- Suppression du code legacy, modularisation ES, renforcement de la sécurité et allègement consolident les bases de la maintenance à long terme
- La release est considérée comme symbolique pour les 20 ans de l’écosystème jQuery
3 commentaires
Un 20e anniversaire émouvant. On a désormais très peu l’occasion de l’utiliser, mais j’espère qu’il continuera d’être apprécié comme un outil toujours utile sur le terrain.
Il est incroyablement tenace… haha
Avis Hacker News
À ce sujet, il existe aussi un bon article qui explique comment utiliser jQuery de façon réactive dans des codebases legacy quand on ne peut pas utiliser un framework moderne
Reactive jQuery for Spaghetti-fied Legacy Codebases
Si l’on doit utiliser jQuery pour des raisons legacy, Backbone peut être une bonne étape intermédiaire avant de passer à un framework moderne
Site officiel de BackboneJS, liste des tags GitHub
En réalité, il m’est arrivé de voir du code React surconçu être pire qu’un code jQuery bien organisé
React a certes relevé le niveau d’exigence en matière de qualité, mais parfois il est plus efficace d’utiliser correctement un outil familier
Ça convient particulièrement bien à des cas comme les Userscripts, où le périmètre du problème est réduit et où l’étape de build est pénible
En fait, on peut très bien l’implémenter sans jQuery, avec seulement
querySelector,addEventListeneretinnerHTMLIl fallait intégrer de force un frontend de recherche personnalisé dans Joomla CMS, et ça fonctionnait plutôt bien
C’est exactement comme ça que nous procédons dans Reactive Mastro
jQuery reste l’une de mes bibliothèques préférées
C’est un outil qui a façonné ma carrière, donc j’y garde toujours une affection particulière
Une combinaison jQuery + jQuery UI + plugins + IA me semble avoir un potentiel énorme
Chaque fois qu’on parle de HTMX, je me dis : « ça ne se ferait pas juste en trois lignes de jQuery ? »
Quoi qu’il en soit, jQuery a toujours résolu les problèmes, et c’est ce qui compte
.load()de jQueryVoir la documentation de jQuery.load()
Je suis tombé dessus pendant un travail d’optimisation des performances, et ça m’a donné encore plus de respect pour jQuery
$()reste inégaléeOn pourrait probablement compenser les différences de performance avec des calculs préalables
C’est simple, tout en donnant un ressenti proche d’une SPA
Good old jQuery, merci pour tout
Ça fait plaisir de voir que jQuery est toujours maintenu et mis à jour
Mais cela veut aussi dire, tristement, que React sera peut-être encore vivant en 2060
Quand je repense à l’ancien callback hell, la situation actuelle ressemble à un rêve
À l’époque des années 2000 et 2010, quand les frameworks SPA n’étaient pas encore courants, j’ai moi aussi appris le développement web avec jQuery
Une bonne partie de ce que j’ai créé à ce moment-là fonctionne probablement encore
J’adresse mes remerciements à l’équipe jQuery
Félicitations à toutes les personnes qui ont participé à la sortie de jQuery 4.0
Si vous cherchez une approche plus structurée, il existe un système de templates réactifs appelé JsViews
C’est ancien et stable, mais ça n’a jamais attiré autant l’attention que les frameworks récents
Personnellement, j’aime bien les styles de jQuery modernisés comme cheerio et alpine.js
cheerio.js.org, alpinejs.dev
Cela dit, le design du site est tellement daté que ça freine probablement son adoption
Malgré cela, ça se charge vite, et sa légèreté est impressionnante
jsrender.min.js ne fait que 12.82kB
Aussi incroyable que cela puisse paraître, jQuery 4.0 prend encore en charge IE11
Cette prise en charge devrait enfin être retirée dans jQuery 5.0
Voir la PR associée et l’issue
Quand on pense que la 3.0 est sortie il y a 10 ans, c’est assez surprenant
C’est appréciable qu’ils continuent à prendre en charge ces utilisateurs et ces produits
Il y a encore beaucoup de salles informatiques scolaires qui utilisent d’anciens systèmes
Le travail investi dans les outils de mise à niveau de jQuery est vraiment impressionnant
J’adore toujours la syntaxe de chaînage de jQuery
Il y a 15 ans, j’ai écrit un tutoriel jQuery en français qui a eu beaucoup de vues
J’espère avoir contribué, même modestement, à la diffusion de jQuery