Node.js est une plateforme logicielle libre en JavaScript, orientée vers les applications réseau évènementielles hautement concurrentes qui doivent pouvoir monter en charge.

Node.js
Description de l'image Node.js logo.svg.

Informations
Développé par Ryan Lienhart Dahl et les développeurs de Node.js
Première version 27 mai 2009 (17 ans, 14 jours)
Dernière version 24.13.0 (Krypton, 13 janvier 2026)[1]
26.3.0 (1er juin 2026)[2]Voir et modifier les données sur Wikidata
Dépôt github.com/nodejs/nodeVoir et modifier les données sur Wikidata
Écrit en JavaScript C++ Python
Système d'exploitation Linux, Microsoft Windows, BSD et macOSVoir et modifier les données sur Wikidata
Type Environnement d’exécution
Licence Licence MITVoir et modifier les données sur Wikidata
Documentation nodejs.org/docs/latest/apiVoir et modifier les données sur Wikidata
Site web nodejs.orgVoir et modifier les données sur Wikidata

Elle utilise la machine virtuelle V8, la bibliothèque libuv pour sa boucle d'évènements, et implémente sous licence MIT les spécifications CommonJS.

Parmi les modules natifs de Node.js, on retrouve http qui permet le développement de serveur HTTP et HTTPS. Ce qui autorise, lors du déploiement de sites internet et d'applications web développés avec Node.js, de ne pas installer et utiliser des serveurs webs tels que Nginx ou Apache.

Concrètement, Node.js est un environnement bas niveau permettant l'exécution de JavaScript côté serveur.

Node.js est utilisé notamment comme plateforme de serveur Web, elle est utilisée par GoDaddy, IBM, Netflix, Amazon Web Services, Groupon[3], Vivaldi, SAP[4], LinkedIn[5], Microsoft[6],[7], Yahoo![8], Walmart[9], Rakuten, Sage et PayPal[10],[11].

Historique

modifier
 
Ryan Dahl, créateur de Node.js.

Node.js a été créé par Ryan Dahl en 2009. Son développement et sa maintenance sont effectués par l'entreprise Joyent. Dahl a eu l'idée de créer Node.js après avoir observé la barre de progression d'un chargement de fichier sous Flickr : le navigateur ne savait pas quel pourcentage du fichier était chargé et devait adresser une requête au serveur web. Dahl voulait développer une méthode plus simple[12]. Le serveur web Mongrel de Ruby a été l'autre source d'inspiration pour Dahl[13]. Dahl avait échoué dans plusieurs projets en C, Lua et Haskell, mais, quand le moteur V8 fut diffusé, il commença à s'intéresser à JavaScript[14]. Même si son idée d'origine était d'utiliser des entrées et sorties non bloquantes, il en reviendra un peu dans son module système car cela provoquait des problèmes de chargement de bibliothèques externes[15].

Il est à noter que Node.js est aujourd'hui[Quand ?] relativement facile à installer sur la plupart des distributions GNU/Linux grand public[16].

Node.js est utilisé au cœur du système d'exploitation Palm webOS[17].

Forks

modifier

Fin 2014, en désaccord avec le rôle de l'entreprise Joyent, plusieurs des développeurs principaux de Node.js décident de forker celui-ci et créent alors io.js.

Un an plus tard, fin 2015, ils décident de fusionner à nouveau avec Node.js[18].

En août 2017, Node.js est à nouveau forké et plusieurs contributeurs créent alors ayo.js[19].

Exemple

modifier

Voici un exemple d'implémentation du programme Hello World sous forme de serveur web :

const { createServer } = require('http');

//Creation du serveur
const server = createServer((request, response) => {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('Hello World\n');
});

server.listen(3000, () => console.log('Adresse du serveur : http://localhost:3000'));

Ce code laisse transparaître deux notions importantes de Node.js.

Tout d'abord, la plateforme dispose d'un chargeur de modules via la fonction require, dont l'un d'eux est la bibliothèque native HTTP permettant de démarrer un serveur HTTP pour recevoir des requêtes et générer des réponses.

Ensuite, elle permet de traiter du code JavaScript asynchrone.

Frameworks pour Node.js

modifier
  • AdonisJS
  • AllcountJS
  • Catberry
  • Compound.js
  • Connect
  • DerbyJS
  • Devis
  • diet.js
  • Express
  • Fastify
  • Feathers
  • Flatiron
  • FoalTS
  • Fortune.js
  • Frisby
  • Geddy
  • Hapi.js
  • Ionic
  • Keystone
  • Knockout.js
  • Koa.js
  • kraken.js
  • Locomotive
  • Mean.js et Mean.io
  • Meteor
  • Mojito
  • Nest.js
  • Nodal
  • Partial.js
  • percolator
  • Raddish
  • RESTify
  • RhapsodyJS
  • SailsJS
  • seneca.js
  • Socket.IO
  • SocketStream
  • Strapi
  • ThinkJS
  • TotalJS
  • TowerJS
  • Trails

Outils pour Node.js

modifier
  • nCombo : framework pour le cloud
  • TestCafé[20] : outil d'automatisation de tests d'applications web.
  • Browserify : outil pour utiliser les modules Node.js dans le navigateur
  • Babel: Compilateur JavaScript open-source
  • Mongoose : couche de persistance pour MongoDB
  • Grunt : outil d'automatisation des tâches
  • PM2 : outil de surveillance et d'automatisation de tâches en cas de crash d'une application Node.js
  • memwatch-next : un paquet fourni par Node Package Manager (npm) pour la surveillance de l'utilisation de mémoire. Utile pour détecter les fuites de mémoires lentes.
  • Gulp : outil d'automatisation des tâches (basé sur les streams)
  • Bower[21] : gestionnaire de paquet pour le web
  • Yeoman : générateur de site web utilisant Grunt et Bower
  • Unit.js : framework pour l'écriture des tests unitaires
  • Mocha (en) : runner pour exécuter les tests unitaires
  • Jasmine (en) : tests unitaires

Certification Node.js

modifier

Depuis janvier 2017, la fondation Node.js a pour projet de créer une certification professionnelle, la NCD[22] (Nodejs Certified Developer).

Cette certification est proposée en partenariat avec la Fondation Linux et est actuellement disponible en accès anticipé.

Utilisation courante

modifier

Node.js est utilisé pour faire des applications multiplateforme avec des framework comme Ionic pour les applications mobiles ou encore Electron pour les applications de bureau.

Des géants, comme Discord ou encore Slack, utilisent ce système.

Node.js est aussi beaucoup utilisé pour faire des serveurs de bot informatique ou bien des serveurs web.

Certaines API Rest pour l'authentification sont faites avec Node.js.

Notes et références

modifier
  1. (en) nodejs, « Release 2026-01-13, Version 24.13.0 'Krypton' (LTS), @marco-ippolito · nodejs/node » (consulté le 20 janvier 2026)
  2. « Release 26.3.0 », 1er juin 2026 (consulté le 1er juin 2026)
  3. Adam Geitgey, « I-Tier: Dismantling the Monoliths », Groupon, 30 octobre 2013 (consulté le 30 avril 2014)
  4. « SAP AppBuilder », SAP, 10 mars 2014 (consulté le 10 mars 2014)
  5. « You'll never believe how LinkedIn built its new iPad app », VentureBeat, 2 mai 2012 (consulté le 10 mai 2012)
  6. « Here's why you should be happy that Microsoft is embracing Node.js », The Guardian, 9 novembre 2011 (consulté le 10 mai 2012)
  7. « WebMatrix - Front End Web Developers take note (ASP.NET, PHP, node.js and more) » (consulté le 2 août 2014)
  8. « Yahoo! Announces Cocktails Shaken, Not Stirred », 2 novembre 2011 (consulté le 10 mai 2015).
  9. « Why Walmart is using Node.js », VentureBeat, 24 janvier 2012 (consulté le 10 mai 2012)
  10. « Clash of the Titans: Releasing the Kraken, NodeJS @paypal », fluentconf.com, 28 mai 2013 (consulté le 11 septembre 2013)
  11. « All such companies and their products in which Node.js is used » (consulté le 2 août 2014).
  12. (en) Amber Harris, « The Birth of Node: Where Did it Come From? Creator Ryan Dahl Shares the History », Devops Angle, 1er avril 2012 (consulté le 21 janvier 2014)
  13. (en) Dio Synodinos, « Deep inside Node.js with Ryan Dahl », InfoQ, 13 décembre 2010 (consulté le 21 janvier 2014)
  14. (en) Kevin McCarthy, « Node.js Interview: 4 Questions with Creator Ryan Dahl », Streetwise Media, 31 janvier 2011 (consulté le 21 janvier 2014)
  15. (en) Oleg Podsechin, « Ryan Dahl Interview: Part 1 », DailyJS, 10 août 2010 (consulté le 21 janvier 2014)
  16. (en-GB) « Node.js — Download Node.js® », sur nodejs.org (consulté le 1er mars 2025)
  17. Guénaël Pépin, « Les nouveautés de webOS 2.0 se dévoilent », businessMOBILE.fr, 1er septembre 2010
  18. (en) « Node.js », sur Node.js (consulté le 22 octobre 2021).
  19. « Ayojs/ayo », sur GitHub (consulté le 11 juillet 2020)
  20. Site de TestCafé
  21. Site de Bower
  22. Page officielle NCD

Annexes

modifier

Sur les autres projets Wikimedia :

Articles connexes

modifier

Liens externes

modifier

📚 Artikel Terkait di Wikipedia

JavaScript

programming language », sur ZDNet (consulté le 20 juillet 2020) « nodejs », sur nodejs.org (consulté le 5 mars 2024) TechVision: Innovators of the Net:

Rich Internet application

depuis[Quand ?] porté vers le côté serveur. L'exemple le plus connu est NodeJS, son rôle dans la démocratisation du JavaScript côté serveur aura un impact

Npm

2020) (en) « Breaking the CommonJS standardization impasse · Issue #5132 · nodejs/node-v0.x-archive », sur GitHub (consulté le 11 janvier 2022) (en-US) « Third

Haxe

3) Java source Java Serveur, bureau 2012 (2.10) JavaScript source HTML5, NodeJS, PhoneGap Serveur, bureau, navigateur, mobile 2006 (beta) Neko byte code

Metasploit

mainframe, multi (applicable à plusieurs plateformes), NetBSD, NetWare, nodejs, OpenBSD, macOS, PHP, Python, R, Ruby, Solaris, Unix, et Microsoft Windows

Long-term support

microsoft.com (consulté le 16 mars 2016) (en) « Node v4.2.0 (LTS) », sur nodejs.org (consulté le 16 novembre 2023). Philipp Kern, Franklin Piat et Geoff

HTTP Strict Transport Security

HTTP Strict Transport Security (HSTS) est un mécanisme de politique de sécurité proposé pour HTTP, permettant à un serveur web de déclarer à un agent utilisateur

C10k problem

2011 (consulté le 2 mai 2024). (en) « Video: Ryan Dahl - Introduction to NodeJS (YUI Theater) », sur yahoo (en) « At the forge: Node.JS », sur acm.org Site