Bref, tu ne devrais pas apprendre jQuery (avant le JavaScript)

Apprendre jQuery ou ne pas apprendre jQuery ? C’est une question qu’on pourrait légitimement se poser si on se met au JavaScript en 2016.

Cela fait quelque temps maintenant que je fais du développement en JavaScript, et depuis peu, je donne aussi des cours de ce langage à des étudiants de 1ère année.

Une chose qui m’a particulièrement marqué, c’est un élève qui s’obstinait à faire du jQuery pour des tâches simples, alors qu’il ne connaît pas les bases du langage derrière.

Remettons un peu les choses à plat, qu’est-ce que jQuery ?

Selon leur site :

jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript.

UNE CHOSE à retenir : C’est une bibliothèque JavaScript riche

Maintenant, qu’est-ce qu’une bibliothèque (ou librairie) JavaScript ?

Selon différentes sources, voici ma définition :

Une bibliothèque JavaScript est un ensemble de fonctions (ou classes ou objets) pré-écrites en JS permettant d’accélérer le développement.

jQuery est donc fait en JavaScript et sert à accélérer le développement. En suivant cette logique, il est nécessaire d’apprendre un minimum le langage derrière avant d’utiliser la bibliothèque.

La question à se poser aussi, est : est-ce que son utilisation va réellement accélérer mon développement ?

Mais… prenons le temps de donner point par point des raisons d’apprendre le JavaScript d’abord (que l’on apprenne jQuery ou non après).

Alors, pourquoi apprendre le JavaScript ?

  • Car nous sommes en 2016, que les navigateurs sont potables et qu’à part des sites wordpress et des portfolios de designer, on n’utilise plus jQuery si souvent que ça. L’utilisation du JavaScript a changé de nos jours et on ne fait plus que des animations, des sliders ou de la validation de formulaire avec. On peut maintenant créer des applications web (Soundcloud, Facebook, Slack…), des applications mobiles, des jeux et faire de la 3D. Dans tout ceci, il n’y aura pas que jQuery à apprendre mais un tas d’autres librairie (PhaserJS, VelocityJS, VueJS…).
  • Car la plupart des bugs ne viendront pas de jQuery mais de votre incompréhension de ce que celui-ci fait derrière, donc du JavaScript.
  • Car importer jQuery pour n’en utiliser qu’une seule fonction, c’est comme acheter un paquet de crayons de couleur pour n’utiliser que le noir, autant acheter juste un crayon. (jQuery c’est quand même 10 221 lignes de code donc autant se servir d’une bonne partie).
Image for post
  • Car passer du JS natif à jQuery (ou tout autre librairie) est plus facile que de faire l’inverse.
    Une librairie, c’est juste une documentation à apprendre, alors que le JavaScript, c’est un TAS de concepts ET une documentation à apprendre.
  • Car si on s’est donné la peine d’apprendre les variables, les conditions, les boucles, les fonctions et les objets, pourquoi ne pas apprendre le reste du JavaScript ?
  • Car pour trouver du travail, si tu connais le langage et si tu sais concevoir du code, tu sauras t’adapter aux frameworks et librairies.
  • Car tu pourras faire du NodeJS (back-end) et du React Natif (app mobile).
  • Car tu es débutant, donc apprends la base, après tu feras ce que tu veux.

En y réfléchissant, j’ai croisé pendant et après mes études, beaucoup de développeurs qui survolaient les bases du JS et apprenaient principalement jQuery (moi y compris).

Mais… c’était une autre époque, le JavaScript était principalement utilisé pour des petites dynamisations et tous les navigateurs n’avaient pas les mêmes normes, donc on était tous parti sur du Mootools, jQuery ou YUI pour simplifier nos développements.

Le JavaScript et les navigateurs ont bien évolués, est-ce utile et nécessaire en 2016 d’utiliser jQuery pour récupérer un élément ou attacher un événement ?

NON !

Ces petites tâches sont facilement faisable en natif maintenant, donc jQuery devrait être utilisé pour des raisons de compatibilité navigateur ou encore pour l’utilisation de l’ensemble de ses fonctionnalités.

À l’époque, la plupart du temps, les bugs ne venaient pas de jQuery, mais de notre incompréhension de ce que celui-ci faisait derrière, donc de notre incompréhension globale du JavaScript.

Il faut se dire qu’entre 2006 et fin 2012, le JavaScript a subi d’énormes changements, et on a arrêté de dire que ce n’était pas un “vrai langage”.

Suite à l’arrivée de Chrome en 2008, NodeJS en 2009, BackboneJS, AngularJS et de l’abandon des mises à jour de sécurité de IE 7 et 8, les standards ont beaucoup évolué et l’utilisation du JavaScript est passé du bidouillage à du vrai développement d’applications maintenables et évolutives.

Il n’y a qu’à regarder les offres d’emploi en tant que développeur JavaScript.

Attendez… Un poste de développeur JavaScript ?
Cet intitulé n’existait même pas avant, c’est pour vous dire à quel point à l’époque le JavaScript était à peine un langage respecté 🙂

En résumé

Si tu lis ceci et que tu es débutant en JavaScript, prend le temps d’apprendre le langage correctement avant d’apprendre n’importe quelle bibliothèque faite en JavaScript.

N’utilise pas jQuery à tout va, réfléchis au contexte de ton projet.

Il n’y a pas de postes de développeurs jQuery, il n’y a que des postes de développeurs front-end ou développeurs JavaScript.

Une liste non-exhaustive de concepts à apprendre en JavaScript natif (Vanilla), avant d’apprendre une bibliothèque ou un framework :

  • Les variables, les conditions, les boucles (obviously)
  • Les Fonctions, les Array, les Objets et les Prototype
  • Le hoisting, la porté de variable, le scope / contexte
  • Le DOM et l’objet window

Ce sont pour moi, les choses nécessaires à comprendre un minimum avant de prendre en main une librairie plus ou moins complexe.

Merci à Adrien Joly pour la relecture et merci à mon élève pour m’avoir inspiré cet article car j’en ai marre de voir trop de jQuery sans raison valable.

PS : à lire aussi, j’ai adoré son article
http://kukuruku.co/hub/programming/do-not-learn-frameworks-learn-the-architecture