L'année 2017 s'est terminée avec une nouvelle fois beaucoup de changements dans l'univers JavaScript.

Revenons sur les tendances de l'année en choisissant comme indicateur le nombre d'étoiles ajoutées sur GitHub.

Quelles sont les étoiles montantes JavaScript de l'année ?


Les chiffres présentés sont les nombres d'étoiles ajoutées sur GitHub au cours de l'année 2017. Les projets présentés proviennent de Best of JS, une application web qui rassemble toutes les tendances liées au développement web.

Projets les plus populaires en 2017

1
Vue.js

Vue.js

🖖 A progressive, incrementally-adoptable JavaScript framework for building UI on the web.
+40.0k

Tendances en 2017

3.0k
3.5k
3.9k
3.1k
3.2k
3.1k
3.6k
3.3k
3.6k
3.4k
3.1k
3.0k
J
F
M
A
M
J
J
A
S
O
N
D

Données GitHub

  • Créé
    2013-07
  • Total stars
    80.7k

Liens

2
React

React

A declarative, efficient, and flexible JavaScript library for building user interfaces.
+27.8k
3
Create React App

Create React App

Create React apps with no build configuration.
+22.5k
4
Puppeteer

Puppeteer

Headless Chrome Node API
+22.0k
5
Axios

Axios

Promise based HTTP client for the browser and node.js
+21.9k
6
VS Code

VS Code

Visual Studio Code
+20.2k
7
Prettier

Prettier

Prettier is an opinionated code formatter.
+17.7k
8
React Native

React Native

A framework for building native apps with React.
+15.6k
9
Element

Element

A Vue.js 2.0 UI Toolkit for Web
+14.9k
10
Electron

Electron

Build cross platform desktop apps with JavaScript, HTML, and CSS
+14.8k

Et le grand vainqueur de l'année 2017 est une nouvelle fois Vue.js avec plus de 40 000 étoiles ajoutées sur GitHub.

C'est beaucoup plus qu'en 2016 et l'écart avec le poursuivant React s'est accentué.

Nul ne pourra ignorer le succès de Vue en 2018 !

Mais quelles sont les raisons du succès de ce framework "côté client" ?

  • Tout d'abord un accès facile pour les nouveaux venus, une approche "composant" comme avec React mais avec une syntaxe facile à appréhender pour les débutants.
  • Un éco-système bien étudié avec des solutions claires pour des tâches telles que:
    • Le routing entre les pages avec vue-router
    • Le contrôle de l'état de l'application (State management) avec Vuex
  • Le concept de fichier unique .vue: un fichier unique pour décrire un composant réutilisable: les balises HTML, le code JavaScript associé et leurs styles.
  • Inclus par défaut dans l'un des frameworks PHP les plus populaires Laravel
  • Ce n'est pas le produit d'un géant de l'internet tel que Facebook ou Google, mais c'est un projet maintenu par Evan You, avec une forte communauté "open source", en particulier du côté de la Chine.

Vue est utilisé par la plus grande plateforme de commerce électronique en Chine (Alibaba) mais aussi par des sociétés telles que Adobe ou GitLab.

Frameworks côté client

1
Vue.js

Vue.js

🖖 A progressive, incrementally-adoptable JavaScript framework for building UI on the web.
+40.0k
2
React

React

A declarative, efficient, and flexible JavaScript library for building user interfaces.
+27.8k
3
Angular

Angular

One framework. Mobile & desktop.
+12.2k
4
Preact

Preact

⚛️ Fast 3kB React alternative with the same modern API. Components & Virtual DOM.
+10.4k
5
Hyperapp

Hyperapp

1 KB JavaScript library for building web applications.
+8.1k

La catégorie des "Frameworks côté client" est traditionnellement la catégorie reine, cette année aussi la bataille fut intense entre les prétendants.

3 grands acteurs se disputent les faveurs des développeurs dans cette catégorie: Vue.js, React et Angular

Nous avons vu précédemment ce qui faisait le succès de Vue.js.

React a un éco-système beaucoup plus fragmenté, laissant au développeur la liberté de créer une solution "à la carte" pour les questions suivantes: routing entre les pages, accès aux données depuis des API distantes, contrôle de l'état de l'application...

A l'opposé Angular propose une approche beaucoup plus systématique, car c'est un framework complet, on dit souvent qu'il y existe une "manière Angular" de faire les choses.

C'est la raison pour laquelle Angular remporte un grand succès dans le monde de l'entreprise. Ce succès est renforcé par l'utilisation par le framework du langage TypeScript, qui introduit dans le langage les "types" chers aux développeurs Java et C#.

Frameworks node.js

1
Express

Express

Fast, unopinionated, minimalist web framework for node.
+6.7k
2
Koa

Koa

Expressive middleware for node.js using ES2017 async functions
+5.8k
3
Fastify

Fastify

Fast and low overhead web framework, for Node.js
+5.8k
4
Gun

Gun

A realtime, decentralized, offline-first, graph database engine.
+3.2k
5
micro

micro

Asynchronous HTTP microservices
+3.2k

Côté serveur également, JavaScript a une place de plus en plus importante.

Mikeal Rogers, un membre influent de la communauté Node.js, prédit que Node.js va dépasser Java dans 1 an.

Mais contrairement à des langages tels que PHP (avec Laravel), Ruby (avec Ruby on Rails) ou Python (avec Django), il n'existe pas de réel framework Node.js dominant ou d'architecture recommandée au moment de créer une nouvelle application serveur.

Malgré son âge, Express est resté en 2017 le framework Node.js le plus populaire. Qui plus est, il est utilisé en interne par de très nombreux projets tels que Feathers, Keystone or Nest.

Remarquons l'arrivée de 3 nouveaux venus dans le classement cette année:

  • Fastify inspiré by hapi, propose une approche complète et convient très bien au développment d'API au format JSON, API dont sont friandes les applications web modernes.
  • Server.js est une solution qui propose d'emblée toutes les fonctionnalités d'un serveur web
  • Nest se différentie en proposant une architecture familière aux développeurs Angular, faite de "modules" et de "contrôleurs" écrits dans le langage TypeScript.

Eco-système React

1
Create React App

Create React App

Create React apps with no build configuration.
+22.5k
2
Ant Design

Ant Design

🐜 A UI Design Language
+13.3k
3
Next.js

Next.js

Framework for server-rendered or statically-exported React apps
+12.7k
4
Storybook

Storybook

Interactive UI component dev & test: React, React Native, Vue, Angular
+9.7k
5
Gatsby

Gatsby

⚛️📄🚀 Blazing fast static site generator for React
+9.7k

Comme le domaine de React est limité à la partie visuelle des applications (la partie "vue" mais ce mot prête à confusion à cause du projet Vue.js !), cela libère de la place pour tout un éco-système de projets qui fonctionnent avec React.

En 2016, Create React App a résolu un problème récurrent: quel point de départ pour créer une nouvelle application avec React ?

Ce projet est très fréquemment mis à jour par Facebook et s'impose comme la manière quasi officielle de démarrer un nouveau projet. Comme une preuve supplémentaire de son succès, StackBlitz est un éditeur de texte en ligne qui permet de créer instantanément une application à partir de Create React App.

Pour les développeurs qui recherchent plus de fonctionnalités, une solution telle que React boilerplate offre toutes les joyeusetés d'une application moderne, y compris une couche "GraphQL" et la possibilité de fonctionner en local, en mode offline.

Parmi les autres projets du classement, on trouve des jeux de composants déjà stylés tels que Ant Design, Ant Design Pro ou Material UI qui permettent aux développeurs d'obtenir aisément une application web avec un joli rendu, qui donne une allure professionnelle (à défaut d'être originale sans doute !).

Le projet Recompose nous montre l'importance des motifs de programmation fonctionnelle (Functional Programming), motifs qui font une partie du succès de React. Tout peut se traduire par une simple fonction et Recompose propose un ensemble d'outils pour prolonger le voyage dans cette direction.

Eco-système Vue

1
Element

Element

A Vue.js 2.0 UI Toolkit for Web
+14.9k
2
iView

iView

A high quality UI Toolkit built on Vue.js 2.0
+9.5k
3
Vuex

Vuex

🗃️ Centralized State Management for Vue.js.
+7.2k
4
Weex

Weex

A framework for building Mobile cross-platform UI.
+6.5k
5
Nuxt

Nuxt

Versatile Vue.js Framework
+6.3k
6
Vuetify

Vuetify

Material Component Framework for Vue.js 2
+6.3k
7
Mint UI

Mint UI

Mobile UI elements for Vue.js
+5.5k
8
vux

vux

Mobile UI Components based on Vue & WeUI
+4.6k
9
vue-router

vue-router

🚦 The official router for Vue.js.
+4.6k
10
Vue material

Vue material

Material design for Vue.js
+3.7k

L'invité spécial: Evan You

Nous sommes admiratifs devant le succès rencontré par Vue.js mais il faut confesser que nous n'étions pas assez familiers avec son éco-système pour nous permettre d'écrire à ce sujet.

C'est la raison pour laquelle nous avons demandé l'avis à un expert... Qui d'autre que le créateur de Vue.js en personne est plus qualifié pour donner son avis ?

Guest Writer evan

De nombreux projets ont profité de la popularité grandissante de Vue.js pour construire un véritable éco-système en pleine croissance.

Element et iView sont les ensembles de composants UI (UI Toolkits) les plus populaires, ils permettent de réaliser rapidement des applications web classiques. De leut côté, Mint UI et vux misent sur les applications mobiles.

Vuetify est un framework qui adhère aux principes du "Material Design", il peut être utilisé aussi bien pour des applications mobiles que pour des applications web classiques. C'est sans doute le framework qui couvre le plus grand nombre de fonctionnalités: rendu côté serveur, applications web dites progressives (PWA), support pour ligne de commande (CLI)... Vue material est un autre framework qui suit rigoureusement les principes du "Material Design".

Nuxt est un framework de plus haut niveau qui permet de créer des applications dites universelles, produisant du code capable de s'executer tant côté serveur que côté client.

Weex est un framework qui permet de créer de véritables applications mobiles natives à partir d'une syntaxe et d'une API familières aux developpeurs Vue.js. Développé par Alibaba, le géant du e-commerce chinois, avec une priorité accordée aux performances, il a permis de construire certaines des applications les plus utilisées dans le monde.

Mobile

1
React Native

React Native

A framework for building native apps with React.
+15.6k
2
Weex

Weex

A framework for building Mobile cross-platform UI.
+6.5k
3
Ionic

Ionic

Build amazing native and progressive web apps with open web technologies. One app running on everyth
+5.5k
4
Quasar

Quasar

Quasar Framework
+3.7k
5
NativeScript

NativeScript

NativeScript is an open source framework for building truly native mobile apps with JavaScript. Use
+2.9k

La polyvalence de JavaScript est telle que l'on peut construire de réelles applications mobiles avec des technologies web.

On retrouve dans cette catégorie le clivage entre les 3 acteurs dominants des frameworks côté client:

Comme en 2016, React Native s'impose comme la solution la plus populaire pour construire une application mobile pour toutes les plateformes (iOS, Android et Windows Mobile), à partir de JavaScript.

Comme le montre cette video très complète intitulée Cross platform apps with React Native, le slogan: "Un seul code pour toutes les plateformes" est devenu une réalité !

Compilateurs JavaScript

1
TypeScript

TypeScript

TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
+11.6k
2
Babel

Babel

:tropical_fish: Babel is a compiler for writing next generation JavaScript.
+5.7k
3
Flow

Flow

Adds static typing to JavaScript to improve developer productivity and code quality.
+5.1k
4
Reason

Reason

Simple, fast & type safe code that leverages the JavaScript & OCaml ecosystems
+2.1k
5
Purescript

Purescript

A strongly-typed language that compiles to Javascript
+1.2k

Les "compilateurs" de cette catégorie sont des outils qui transforment du code dans un langage donné en code JavaScript standard, capable de s'exécuter dans n'importe quel navigateur Web, ou tout environnement supportant JavaScript.

On peut avoir besoin d'un tel compilateuur pour 2 raisons:

  • Pour profiter des dernières avancées du langage JavaScript (spécifications ES6 et ES7) tout en produisant du code compatible avec la majorité des navigateurs web. C'est ce qui fait le succès de Babel, utilisé par un très grand nombre de projets Web.
  • Pour ajouter de nouvelles fonctionnalités au langage, en particulier les "types statiques" qui existent dans des langages institutionnels tels que Java ou C#.

Le langage JavaScript ne propose que des types "dynamiques", cette flexibilité peut poser problème, en particulier dans le cadre de gros projets.

Dans le but d'offrir aux développeurs web le confort et la sécurité des "types statiques", 2 concurrents s'opposent farouchement: TypeScript, créé par Microsoft et Flow, créé par Facebook, et utilisé en interne par Facebook sur de nombreux projets.

TypeScript, largement en tête en 2016, conserve l'avantage sur son rival en 2017. De nombreux projets utilisent TypeScript, à commencer par Angular et l'intégration facile avec l'éditeur de texte VS Code joue en sa faveur.

Pour mieux comprendre les différences, nous vous recommandons cet article de James Kyle: A Comparison Between Adopting Flow or TypeScript

Outils de construction

1
Parcel

Parcel

📦🚀 Blazing fast, zero configuration web application bundler
+14.0k
2
Webpack

Webpack

A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting a
+13.1k
3
Gulp

Gulp

The streaming build system
+3.6k
4
Rollup

Rollup

Next-generation ES6 module bundler
+3.5k
5
Poi

Poi

:zap: Delightful web development.
+2.7k

Pour construire une application web moderne, les développeurs ont besoin d'un outil capable d'assembler et de transformer diverses parties (templates, code JavaScript écrit dans un dialecte donné, styles...) et d'optimiser le tout dans le but de rendre l'application web performante. Ce sont ces outils de construction que nous analysons ici.

La plus grosse surprise de l'année est l'arrivée de Parcel qui détrône Webpack, le roi incontesté de la catégorie.

Lancé en août 2017, Parcel a connu un départ fulgurant avec 14 000 étoiles ajoutées sur GitHub en l'espace de quelques mois.

Alors que Webpack est basé sur tout un éco-système d'extensions appelées loaders, Parcel promet un usage extrêmement simple, sans aucune configuration nécessaire.

Ne faisons pas dire à ces chiffres ce qu'ils ne disent pas, Webpack reste extrêmement populaire et est inclus par de nombreux autres projets, en particulier Gatsby et Create React App.

Alors que Parcel et Webpack ciblent les développeurs d'applications web, Rollup, cible les créateurs de "librairies".

C'est ainsi que les créateurs de React ont migré leur processus de construction de Browserify vers Rollup en 2017, comme expliqué dans cet article issu du site officiel.

Tout comme Parcel, Poi mise sur une grande simplicité d'usage mais ne concerne (pour l'instant) que les projets créés avec React, Vue.js ou Preact.

Frameworks de test

1
Jest

Jest

🃏 Delightful JavaScript Testing.
+7.1k
2
AVA

AVA

:rocket: Futuristic JavaScript test runner
+4.8k
3
Mocha

Mocha

☕️ simple, flexible, fun javascript test framework for node.js & the browser
+3.1k
4
Jasmine

Jasmine

Simple JavaScript testing framework for browsers and node.js
+1.2k
5
Tape

Tape

tap-producing test harness for node and browsers
+1.0k

Jest, créé par Facebook pour tester les applications React, a évolué très vite au cours des derniers mois (plus de 22 versions majeures sont sorties !) et s'est imposé comme le framework de test le plus populaire en 2017.

Jest est devenu une solution de test complète qui peut être utilisée aussi bien côté client que côté serveur.

Ses points forts:

  • Pas de configuration nécessaire
  • Très confortable du point de vue du développeur (Jest détecte les changements sur les fichiers de manière intelligente, les compte-rendus d'exécution sont très lisibles...)
  • Syntaxe similaire à celle de Mocha, en particulier les mots-clefs describe et it sont connus de nombreux développeurs.
  • Pas de librairie supplémentaire pour écrire les tests, tout est inclus dans Jest.
  • Possibilité unique d'enregistrer automatiquement les réponses attendues aux futurs tests (snapshots)

AVA, le projet numéro 1 l'an dernier, glisse en seconde position cette année.

C'est l'un des innombrables projets de Sindre Sorhus qui l'utilise comme solution de test pour ses propres projets.

Par rapport à Jest, AVA est une solution plus légère qui privilégie les performances en exécutant les tests en parallèle, et utilise une syntaxe proche de standards utilisés par des solutions telles que Tape.

Editeurs de texte

1
VS Code

VS Code

Visual Studio Code
+20.2k
2
Atom

Atom

:atom: The hackable text editor
+9.1k
3
Reactide

Reactide

Reactide is the first dedicated IDE for React web application development. http://reactide.io
+7.4k
4
Brackets

Brackets

An open source code editor for the web, written in JavaScript, HTML and CSS.
+1.9k
5
Nuclide

Nuclide

An open IDE for web and native mobile development, built on top of Atom
+1.4k

Nous parlons ici des éditeurs de texte issus de projets open-source et utilisant des technologies web.

VS Code, créé par Microsoft et Atom, créé par GitHub, sont 2 applications construites à partir d'Electron une plateforme très populaire pour le développement d'applications desktop pour Windows aussi bien que pour MacOS.

Les 2 projets étaient au coude-à-coude en 2016 mais VS Code a pris un avantage déterminant en 2017.

VS Code progresse très vite, chaque mois apporte son lot d'innovations.

Sans devoir installer aucune extension, les développeurs disposent de toutes les fonctionnalités dont ils ont besoin:

  • Integration avec Git
  • Saisie assistée pour beaucoup de choses: le language JavaScript bien sûr, mais aussi les noms de fichiers en local, les noms de package installés depuis NPM...
  • Syntaxe React prise en compte
  • Ligne de commande intégrée

Si l'on ajoute Prettier à VS Code sans oublier d'activer l'option pour formater automatiquement le code à chaque enregistrement, on obtient la combinaison parfaite pour écrire du code dans un confort absolu !

Feuilles de style en JavaScript

1
Styled Components

Styled Components

Visual primitives for the component age. Use the best bits of ES6 and CSS to style your apps without
+8.7k
2
CSS Modules

CSS Modules

Documentation about css-modules
+2.9k
3
Polished

Polished

A lightweight toolset for writing styles in JavaScript ✨
+2.9k
4
Glamorous

Glamorous

💄 Maintainable CSS with React
+2.9k
5
Emotion

Emotion

⚡️ The Next Generation of CSS-in-JS
+2.5k

Il n'y a toujours pas de consensus à propos de la meilleure façon de manipuler les styles d'une application construite avec React.

Il est possible d'utiliser des ensembles de composants React qui intègrent déjà leurs propres styles: c'est la cas de solutions telles que Material UI ou Ant Design. Cette solution est très pratique à condition que les besoins soient plutôt standards et ne nécessitent pas trop de personnalisation.

Il est aussi possible d'opter pour l'intégration d'une feuille de styles à l'ancienne, en utilisant le très célèbre Bootstrap ou encore Bulma, et en jouant avec la propriété className des composants pour associer les bons styles.

Mais dans ce cas les composants dépendent d'un contexte global, ils ne sont plus atomiques, ce qui rend le partage, les tests plus difficiles. Sans parler des risques de conflit entre les composants qui partagent des styles communs... jusqu'à ce qu'un besoin de personnalisation fasse jour. Un casse-tête bien connu des développeurs Web !

C'est la raison pour laquelle une nouvelle catégorie de solutions a émergé récemment: "CSS dans JavaScript" ou "Feuilles de styles en JavaScript".

Mark Dalgleish, l'auteur de CSS Modules, a écrit un excellent article qui explique l'intérêt de cette approche: Un language de style unifié.

Générateurs de Site Statique

1
Gatsby

Gatsby

⚛️📄🚀 Blazing fast static site generator for React
+9.7k
2
Hexo

Hexo

A fast, simple & powerful blog framework, powered by Node.js.
+6.2k
3
React Static

React Static

⚛️ 🚀 A progressive static-site generator for React.
+3.0k
4
Phenomic

Phenomic

Modular website compiler ⚡️
+1.4k
5
Metalsmith

Metalsmith

An extremely simple, pluggable static site generator.
+1.0k

Les Générateurs de Site Statique sont des outils capables de générer un ensemble de fichier HTML, CSS et JavaScript qu'il est possible de déployer sur n'importe quel serveur web.

De tels sites, dits statiques, ont l'avantage d'être performants, robustes et faciles à maintenir... à condition d'utiliser l'outil adéquat!

Numéro 2 en 2016, Gatsby tient sa revanche en 2017. Il permet de construire des sites web statiques en profitant du vaste éco-système React.

Cette année React Static est le nouveau venu dans la catégorie. Inspiré par Create React App, il propose une approche plus légère que Gatsby en misant sur la simplicité et les performances.

Observons que les projets Next.js et Nuxt, mentionnés précedemment parmi les éco-systèmes React et Vue, peuvent aussi être utilisés en tant que Générateurs de Site Statique.

GraphQL

1
Gatsby

Gatsby

⚛️📄🚀 Blazing fast static site generator for React
+9.7k
2
React Starter Kit

React Starter Kit

React Starter Kit — isomorphic web app boilerplate (Node.js, Express, GraphQL, React.js, Babel, Post
+4.3k
3
Apollo client

Apollo client

:rocket: A fully-featured, production ready caching GraphQL client for every UI framework and GraphQ
+4.1k
4
GraphQL

GraphQL

GraphQL is a query language and execution engine tied to any backend service.
+2.8k
5
GraphiQL

GraphiQL

An in-browser IDE for exploring GraphQL.
+2.6k

Quand les historiens du futur jetteront un regard sur l'historique de GraphQL, 2017 sera probablement un point clé.

Des compagnies importantes telles que le New York Times ont commencé à adopter GraphQL, et sur le plan des librairies Relay et Apollo (les deux principales librairies client GraphQL) ont toutes les deux sorti des versions majeures cette année.

A part ces deux acteurs majeurs, d'autres compagnies telles que Graphcool ont aussi sorti une floppée d'autres outils et librairies, et les frameworks full-stack adoptant GraphQL tels que Vulcan commencent également à créer leur propre niche.

Il est aussi important de mentionner que le générateur de sites statiques le plus populaire de l'année, Gatsby, utilise également GraphQL en tant que maillon dans sa chaîne de traitement de données.

Avec autant de nouveaux entrants dans la galaxie GraphQL, ce n'est qu'une question de temps avant que cette technologie devienne une alternative valable à REST.

Conclusion

Nous avons donc vu que Vue.js reste au sommet de la hiérarchie des projets JavaScript, son succès s'étant accéléré en 2017.

L'eco-système React reste extrêmement populaire malgré les doutes et les craintes engendrés par un problème autour de la licence utilisée par Facebook pour ses projets open-source.

S'il fallait sélectionner un projet parmi les étoiles montantes de l'année, notre choix se porterait sur Prettier, c'est tellement pratique d'écrire du code sans plus se soucier du formatage !


Pour une approche plus qualitative sur l'univers JavaScript, lisez les résultats de l'enquête State of JavaScript 2017, nous avons collecté et analysé les réponses de plus de 23 000 développeurs.


Projetons-nous dans le futur, quels seront les grands projets de l'année 2018 ?

  • Un nouveau framework basé sur GraphQL ?
  • Une solution qui utilise le nouveau standard WebAssembly pour créer une expérience unique dans le navigateur web ?

Merci pour votre attention, rejoignez-nous sur GitHub... et rendez-vous dans un an !

Authors

Sacha Grief
Sacha Grief
Author of Discover Meteor and creator of Vulcan, a React+GraphQL open-source framework.

Available Translations

English

中文

日本語

Español

Indonesia