JavaScript : Retours d’expérience de développeurs web sur ce langage populaire

Nos collaborateurs évoluent sur différents environnements techniques en développement Web, Mobile, Infra/ Cloud et Data.
Nous vous proposons un tour d’horizon des différentes technologies utilisées par nos experts techniques, en commençant par l’univers du JavaScript.

CBTW
L’Actualité Tech — Blog CBTW
10 min readJul 8, 2021

--

Maxime Opsommer, Florent Barriol et Baptiste Garcin, développeurs web, reviennent sur leur découverte du JavaScript et la manière dont il a impacté leur vision du développement. Ils évoquent ses cas d’usage, ses atouts, mais aussi ses limites. Chacun aborde également son outil de prédilection soit respectivement : Vue, React et Node.

JavaScript — Photo by Greg Rakozy on Unsplash

Créé en 1995, JavaScript est un langage de programmation orienté objet. Historiquement uniquement utilisé côté navigateur, il a ensuite étendu son domaine d’application. Il permet aujourd’hui de développer notamment des applications web complexes et entièrement dynamiques.
Bénéficiant d’une large communauté, il est le langage le plus populaire et communément utilisé, à 67,7%, selon l’enquête StackOveflow 2020.
De nombreux frameworks et outils sont donc centrés sur JavaScript, tels que Vue.js, React.js et Node.js.

React.js est un framework créé par Facebook en 2011. Selon une étude de JetBrains, il s’agit d’ailleurs du framework JavaScript le plus utilisé en 2020, à 64%. Basé sur des composants autonomes en JavaScript, il permet de créer des interfaces utilisateurs interactives et complexes.

Créé en 2014 par Evan You, Vue.js est également un framework JavaScript utilisé pour la création d’interfaces, qui comporte certaines similitudes avec React.

Node.js est une plateforme de développement libre basée sur JavaScript. Utilisé côté serveur, c’est un langage qui permet de faciliter le travail des développeurs back au quotidien.

C’est quoi JavaScript pour toi ?

  • Maxime : JavaScript est un langage essentiellement front, plutôt utilisé historiquement pour les petits scripts. Puis de nouveaux frameworks et librairies sont arrivés rendant l’utilisation du langage beaucoup plus agréable : React, Vue, Angular.
    Mon apprentissage du JavaScript s’est fait progressivement : d’abord du JavaScript natif, les bases CSS, Jquery bien évidemment puis les librairies.
  • Florent : Pour moi, JavaScript c’est tout ce qui est dynamique. JavaScript a permis le développement du front et lui a permis d’arriver au même niveau d’importance que le back. Avant il y avait Jquery et on faisait un peu de JavaScript natif par-ci, par-là, aujourd’hui on travaille sur un code front plus puissant et plus industrialisé.
  • Baptiste : JavaScript est un langage de programmation originellement exécuté côté navigateur. À la base il servait surtout à faire des animations, à modifier l’affichage de manière dynamique, puis il est devenu de plus en plus complexe. Il a permis de décorréler le rafraîchissement de la navigation. On peut maintenant récupérer des données de façon asynchrone sans avoir besoin de recharger intégralement la page.
    En parallèle le JavaScript a aussi été porté côté serveur sous le nom de Node.js. Cette version est plutôt orientée pour faire des APIs pour les navigateurs et autres applications web.
    C’est un langage multifonction, il sert à tout dans l’univers du web : scripts de migrations sur des bases de données, API, bot twitter, ...

Comment as-tu découvert JavaScript ?

  • Maxime : J’ai commencé en DUT avec des petites fonctions basiques (comment déplacer un élément ou changer du texte…). Puis j’ai eu une première expérience professionnelle. À la base il s’agissait de très longues lignes de code, Jquery permettait d’ailleurs de condenser tout ça (facilitation de l’écriture). Aujourd’hui, tout cela est encore plus facilité avec Vue et React. Maintenant, tout le monde peut créer des librairies, les créer, les importer, il existe tellement de composants que c’est facile de se servir.
  • Florent : J’ai d’abord découvert Javascript en DUT, via Jquery. Puis j’ai pu utiliser React lors de ma première expérience professionnelle, c’est d’ailleurs React qui m’a permis de découvrir ce qu’était vraiment le JavaScript natif. J’ai apprécié sa syntaxe, beaucoup plus légère que ce que j’avais pu voir en PHP ou Java.
  • Baptiste : Avant j’étais journaliste et lorsque j’ai commencé la programmation c’était dans une optique de faire de la data visualisation et de l’appliquer à mon métier. Comme le JavaScript permet d’avoir de l’animation dans le navigateur c’était le langage de base dont j’avais besoin. Et de toute façon en front il n’y a pas cinquante alternatives. C’est comme ça que je suis tombé sur le JavaScript, à la base c’était pour faire des graphiques et des cartes à mettre au centre de l’information.

Quel est ton framework / ton outil de prédilection basé sur JavaScript ?

  • Maxime — Vue : J’ai d’abord appris Vue en autonomie, je n’avais pas d’éléments de comparaison. J’ai ensuite pu tester React dans le cadre d’un projet professionnel existant. J’ai trouvé React plus puissant, ils misent tout sur les fonctions pour gagner en performance mais cela me paraissait plus difficile en termes de lisibilité.
    Ce que j’apprécie dans Vue c’est le découpage entre les templates, les composants, les fonctions. Cela me paraissait plus confortable que React qui est plus orienté fonctionnel.
    Je me suis beaucoup renseigné sur les différentes librairies/frameworks JavaScript, je conseillerai plutôt Vue à des débutants pour sa facilité d’apprentissage. Vue me paraît également plutôt adapté pour de petites applications avec peu d’ampleur car la technologie est rapidement déployable.
    React, quant à lui, a une grosse communauté et est très puissant, Vue arrive tout de même à faire son petit bout de chemin et à s’imposer sur le marché.
  • Florent — React : J’ai adoré React et son fonctionnement avec des composants. Ces petites briques réutilisables qu’on doit faire interagir entre elles m’ont fait penser aux legos, j’aime toujours y jouer d’ailleurs. D’autres librairies JS utilisent également ce principe de composants, néanmoins à mes yeux React a un côté moins « magique », il est plus déclaratif que d’autres librairies où les liens entre variables se font plus automatiquement. L’ajout des hooks a également permis d’alléger et faciliter la création des composants, adieu les classes bien verbeuses !
    Avec React, j’ai la possibilité de créer ma propre bibliothèque d’outils, rien n’est prédéfini en amont.
  • Baptiste — Node : Aujourd’hui je développe en Node.js. Pour moi, il ne s’agit pas d’un framework JavaScript, mais plutôt d’un langage à part entière qui partage la même syntaxe que JavaScript. Il comporte des outils surtout orientés back-end (création de serveurs, file system, etc). Et en termes de framework Node, celui que je préfère c’est HAPI.js. Je le préfère à Express car je le trouve plus adapté pour créer une API. L’API Gateway pour moi a plus de sens qu’un système de questions-réponses avec un navigateur.
    De plus, HAPI.js a un écosystème assez robuste, une gestion du cache maligne et un plug-in de validation des entrées extrêmement efficace.
    Pour le back, il y a le choix entre Ruby on Rails ou PHP, mais comme j’avais commencé la programmation en faisant du JavaScript je suis allé vers Node assez naturellement.
    Et je trouve que dans ce langage, il y a un certain charme. Cela vient du typage très faible qui fait que tu peux prendre des raccourcis et du côté asynchrone. Côté front les frameworks vont avoir tendance à masquer cette asynchronie pour une gestion très fluide. En back, il faut la maîtriser et l’orienter. Il est possible d’exécuter plusieurs opérations parallèles qui résultent d’un véritable choix d’architecture. C’est donc un choix d’archi implémenté auquel il faut réfléchir en amont. C’est assez stimulant intellectuellement.

Dans quels cas recommanderais-tu l’utilisation de JavaScript ?

  • Maxime — Vue : Plutôt pour de petits projets : côté stats Vue présente les meilleures performances sur des sites légers à moyens. Vue est plus léger et rapide à démarrer. Pour des sujets plus complexes avec des volumes de données importants, React serait peut-être plus adapté — à challenger.
  • Florent — React : React est parfait pour la création de Design System, c’est d’ailleurs ce qui est utilisé dans ma mission actuelle chez Arte.
    Le principal enjeu côté Arte est de gérer la scalabilité du site, autrement dit continuer à le faire évoluer et faire en sorte que le front soit également utilisable sur d’autres plateformes (mobile, TV).
    C’est là qu’intervient le système de composants permettant de créer rapidement de nouvelles pages et garantir une cohérence visuelle entre elles. D’autre part, si le contenu d’un composant est modifié cela pourra être répliqué automatiquement partout où il a été utilisé.
  • Baptiste — Node : Dans tout ce qui va être serveur, interfaces GraphQL, REST. On peut aussi gérer tout un panel de cas d’applications comme allumer des lampes, interroger d’autres serveurs, … Dès qu’on a besoin de gérer des requêtes HTTP, je recommande Node.
    Ce langage permet aussi de paralléliser des tâches lourdes sur une base de données. Il y a peut-être d’autres manières de faire, mais ça reste assez pratique et ça permet de gagner en temps d’exécution. J’évoque d’ailleurs ces points dans un article sur un projet de développement d’un jeu de pronostics en temps réel.

Quel a été l’impact de JavaScript dans ta vision du développement ?

  • Maxime : Je suis longtemps resté dans ma zone de confort avec Java mais j’ai l’impression que le marché s’oriente clairement vers du JavaScript aujourd’hui. Je pense que je vais très bientôt me mettre à Node.js également côté Back.
    Je me suis longtemps contenté de maîtriser les bases en JavaScript. Néanmoins depuis les normes ES6, JavaScript est vraiment devenu puissant, c’est de là qu’il tire sa force aujourd’hui. On peut tout faire maintenant avec du JavaScript.
  • Florent : Lorsque j’ai découvert React, j’ai vraiment vu le potentiel à terme pour obtenir un front beaucoup plus robuste. Après une migration vers React lors de ma première expérience professionnelle, j’ai voulu en voir plus, continuer ma montée en compétences, continuer à acquérir les bonnes pratiques. Ce que j’apprécie également c’est que si tu as une bonne maîtrise de JavaScript, tu peux utiliser n’importe quelle librairie ensuite. J’adore tout ce qui est visuel, avec HTML/CSS le combo est parfait.
  • Baptiste : Pour moi j’ai toujours su que je m’orientai vers ce type de langage. Comme c’était la base, il n’y a pas eu de débat. Et ça m’a clairement permis de penser les questions d’asynchronie de façon plus maligne. Ce sont des questions qu’on ne se pose pas forcément dans d’autres langages. Ça permet d’exécuter plusieurs tâches en même temps, ça casse un peu la programmation ligne après ligne. Maintenant j’ai plus l’impression que c’est une question de flux, l’impression d’orienter des cours d’eau.

Pourquoi devrait-on apprendre à développer en JavaScript ?

Aujourd’hui que ce soit Vue, React ou Angular, si on touche au front, il paraît nécessaire de maîtriser au moins l’un d’entre eux. C’est devenu un incontournable aujourd’hui si on veut faire du front.
D’autant plus qu’en connaissant l’un d’eux, l’apprentissage des autres est facilité.
Il vaut mieux se concentrer dans un premier temps sur une librairie/un framework, on le choisit ou on s’adapte à un besoin projet. Une fois qu’on en maîtrise un, on peut commencer à comparer avec les autres et voir où est notre préférence.
Côté back Node.js prend énormément d’ampleur et il y a une certaine forme d’effervescence autour et une tendance d’innovation plus tournée vers le Node pour de nouveaux projets. Bien qu’il y ait aussi plein de contre-exemples. Il y a avant tout une techno par produit et chaque choix technologique se justifie selon les besoins d’un projet. Mais en ce moment c’est beaucoup autour du Node que les choses se passent, même si ça peut aussi s’inverser dans les prochaines années. Dans le monde de l’informatique, tout va très vite, les technos deviennent rapidement obsolètes. Dans dix ans d’autres technos vont sûrement arriver sur le marché et redistribuer les cartes.

Enfin une autre valeur ajoutée de JavaScript est la gestion de l’asynchronisme. C’est un concept fondamental que l’on ne retrouve pas dans tous les langages. L’asynchronisme permet de réaliser plusieurs requêtes en même temps.

Quel est le ‘truc en plus’ de JavaScript et de ses frameworks ?

JavaScript est un langage non typé et donc assez permissif et facile à prendre en main. Il a un aspect assez libre, puisqu’on peut créer une variable et en faire ce que l’on veut.
Le nombre de librairies augmente aussi très rapidement, presque de manière exponentielle. JavaScript est très bien fourni. Cet aspect fonctionnel de JavaScript est très appréciable. Et il existe par exemple beaucoup de features fonctionnelles autour de streams qui existent aussi en Java. Aujourd’hui les langages ont une tendance à s’aligner sur les features proposées, ce qui rend plus aisée la possibilité de passer d’un langage à l’autre.
JavaScript dispose également d’une immense communauté, tout va très vite, le langage et ses librairies évoluent en permanence. Ce qui crée une réelle émulation.
Côté Node.js, le plus réside dans la gestion et l’utilisation des dépendances qui sont très pratiques. Et aussi tout ce qui est NPM (Node package manager) qui maintient une liste des dépendances ultra-centrales. On peut citer notamment Moment qui permet de gérer les dates. C’est en Open Source et on peut facilement ajouter ces dépendances à son projet. Et aussi l’écosystème et la façon dont il est intégré dans Node sont un vrai plus.

Quelles sont les limites de JavaScript ?

Le fait que ce soit un langage permissif est à la fois une force et un frein. C’est attractif, mais cela peut aussi engendrer des erreurs. Comme le fait de pouvoir mettre des chaînes de caractères dans des cases faites pour des chiffres. Normalement on ne devrait pas pouvoir le faire.
De plus, JavaScript s’exécute principalement côté client, il n’est donc pas possible de vérifier en amont s’il y a des erreurs, celles-ci ne seront visibles qu’une fois la page chargée dans le navigateur. C’est là qu’intervient le typage (avec Typescript) ou des langages comme ReasonML qui possèdent un compilateur permettant de détecter les erreurs avant une mise en production. Concernant TypeScript, il propose une évolution du JavaScript vers un typage plus fort et salutaire. Mais il soulève d’autres questions, car en back par exemple il nécessite une phase de transpilation qui rend le projet assez lourd et ajoute une couche de complexité non négligeable. Les messages d’erreurs sont également complexes et l’intégration des modules externes plus compliquée.
Travailler avec JavaScript demande donc de la rigueur et de respecter les bonnes pratiques comme tout projet, voire peut-être plus encore.
Un second problème très inhérent au front vient du fait que l’on doit tourner sur des navigateurs dont on ne connaît pas l’environnement technique cible sur lequel l’on déploie. On se retrouve à devoir transpiler son JavaScript, ce qui peut causer des bugs et nécessite des compétences à part.

Nous publions régulièrement des articles sur des sujets de développement produit web et mobile, data et analytics, sécurité, cloud, hyperautomatisation et digital workplace.
Suivez-nous pour être notifié des prochains articles et réaliser votre veille professionnelle.

Retrouvez aussi nos publications et notre actualité via notre newsletter, ainsi que nos différents réseaux sociaux : LinkedIn, Twitter, Youtube, Twitch et Instagram

Vous souhaitez en savoir plus ? Consultez notre site web et nos offres d’emploi.

--

--

CBTW
L’Actualité Tech — Blog CBTW

Nos experts partagent leur vision et leur veille en développement web et mobile, data et analytics, sécurité, cloud, hyperautomation et digital workplace.