af83

Vanilla JS is awesome

Vanilla JS est un framework JavaScript utilisé par les sites web les plus connus, de Google à Twitter en passant par Wikipédia et Apple. Il est rapide, puissant, multi-plateformes et très léger. D'ailleurs, voici l'intégralité de son code source :


J'espère que vous l'aurez compris, cette initiative n'est pas à prendre au premier degré. Elle vise à nous encourager à nous poser la question de l'utilité des frameworks JavaScript, et tout particulièrement le plus utilisé d'entre eux, jQuery. En effet, certaines voix se sont élevées pour faire entendre que ces frameworks étaient parfois utilisés de manière abusive, comme créer systématiquement des plugins jQuery pour des bibliothèques qui n'utilisent que peu jQuery et qu'il pourrait pourtant être intéressant d'utiliser sans avoir à charger jQuery.

Que l'on ne s'y méprenne pas, je considère que jQuery a été une avancée gigantesque pour le développement d'applications web et rend abordable à une très large population des effets JavaScript qui seraient trop difficiles d'accès sans cela. J'ai connu le développement en JavaScript avant l'arrivée des frameworks comme jQuery ou, avant lui, Prototype.js. Je sais à quel point ils ont changé la donne en cachant les différences entre navigateurs et en apportant ces petites fonctions qui simplifient considérablement le développement JS. Récupérer une liste d'éléments DOM qui correspondent à un sélecteur CSS donné est incroyablement pratique et jQuery, qui a été le premier à offrir une fonction simple et performante pour le faire, a réellement changé la manière dont on développe des applications JS.

Cette réflexion autour des frameworks JavaScript ne saurait dénigrer cette réalité. Pour autant, l'écosystème des navigateurs a évolué et il convient de réfléchir à nouveau sur ce que nous apporte jQuery. Les navigateurs de l'ancienne époque, comme IE6, ne sont plus utilisés que par un très faible pourcentage des utilisateurs globaux du Web et peuvent être de plus en plus facilement ignorés. Les navigateurs modernes, Firefox et Chrome en tête, ont su tirer leçon des avancées de jQuery.

Par exemple, je citais précédemment la possibilité de récupérer des nœuds du DOM à partir d'un sélecteur CSS. Et bien, il faut savoir que tous les navigateurs modernes disposent d'une fonction, querySelectorAll (QSA pour les intimes), pour faire exactement cela. Et cette méthode est bien plus rapide que faire l'équivalent en JavaScript. Le $ de jQuery est devenu un wrapper pour cette méthode, avec des roues de secours pour les navigateurs comme IE6. Je pourrais également citer la gestion des classes CSS associées à un élément qui a été grandement simplifiée grâce à classList.

D'autre part, les différences entre navigateurs sont moins marquées qu'elles n'ont pu l'être par le passé. Bien sûr, il ne faut pas s'attendre à ce que des API récentes comme localStorage fonctionnent identiquement entre tous les navigateurs. Mais dans l'ensemble, les navigateurs finissent par se mettre d'accord. En particulier, si on prend les API couvertes par jQuery (dont localStorage ne fait pas partie), alors il existe très peu de différences entre les navigateurs modernes. Mais le code de jQuery reste lourd car il conserve la compatibilité avec les anciens navigateurs : 250 ko pour la version 1.8.0 pour le code non-compressé, cela pèse sur le temps de chargement !

Est-ce que l'on doit en venir à considérer jQuery comme un poids mort si l'on ne développe que pour des navigateurs modernes ? Loin de là, mais je recommande à tout un chacun de ne plus recourir à jQuery comme un automatisme et de penser à son usage avant de l'inclure sur un projet.

Aux intégrateurs n'ayant pas une connaissance approfondie du JavaScript, continuez à utiliser jQuery ! Son écosystème de plugins est inégalé et permet d'agrémenter vos réalisations à moindre frais.

Aux développeurs plus expérimentés, et tout particulièrement les développeurs de plugins jQuery, je souhaiterais faire passer le message suivant : si votre code ne tire que peu partie de jQuery, essayez de ne pas en dépendre. Ne pourriez-vous pas livrer deux versions de votre code, l'une en JavaScript de base, l'autre encapsulant cette première version dans un plugin jQuery ?

Aux développeurs de jQuery, je n'ai pas grand chose à dire à part un gros merci. Vous avez pris le bon chemin en permettant à tout le monde de ne pas payer pour les vieux navigateurs et en allant vers du code modulaire.

Enfin, pour les développeurs d'applications web, j'espère que vous aurez comme moi l'occasion de travailler sur un projet sans jQuery qui vous permettra de vous rendre compte des avancées des navigateurs, de continuer à être reconnaissant pour le confort de jQuery et de pouvoir le remettre à sa juste place dans l'équation.

PS : mes propos sont également valables pour d'autres frameworks, j'ai juste décidé de parler de jQuery pour sa part de lion, que les abus y sont du coup plus visibles qu'ailleurs, et aussi un peu parce que je le connais mieux que d'autres frameworks ;-)

blog comments powered by Disqus