Node.js
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.
Développé par | Ryan Lienhart Dahl et les développeurs de Node.js |
---|---|
Première version | [1] |
Dernière version | 18.7.0 ()[2] |
Dépôt | github.com/nodejs/node |
Écrit en | C, C++ et JavaScript |
Système d'exploitation | Linux, Microsoft Windows, BSD (d) et macOS |
Type | Environnement d’exécution |
Licence | Licence MIT |
Documentation | nodejs.org/en/docs |
Site web | nodejs.org |
Elle utilise la machine virtuelle V8, la librairie 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. 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],[6], Microsoft[7],[8], Yahoo![9], Walmart[10], Rakuten, Sage et PayPal[11],[12].
Historique
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[13]. Le serveur web Mongrel de Ruby a été l'autre source d'inspiration pour Dahl[14]. 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[15]. 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[16].
Node.js est utilisé au cœur du système d'exploitation Palm webOS[17].
Forks
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, ils décident de fusionner à nouveau avec Node.js[18].
En , Node.js est à nouveau forké et plusieurs contributeurs créent alors ayo.js[19],[20]
Exemple
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 transparaitre 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
- Adonis
- 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
- nCombo : framework pour le cloud
- TestCafé[21]: 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[22] : 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
Depuis , la fondation Node.js a pour projet de créer une certification professionnelle, la NCD[23] (Nodejs Certified Developer). Cette certification est proposée en partenariat avec la Fondation Linux et est actuellement disponible en accès anticipé.
Utilisation courante
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. Les 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.
Références
- « node-v0.x-archive on GitHub »
- « Release 2022-07-26, Version 18.7.0 (Current), @danielleadams », (consulté le )
- Adam Geitgey, « I-Tier: Dismantling the Monoliths », Groupon, (consulté le )
- « SAP AppBuilder », SAP, (consulté le )
- « You'll never believe how LinkedIn built its new iPad app », VentureBeat, (consulté le )
- « Blazing fast node.js: 10 performance tips from LinkedIn Mobile » (consulté le )
- « Here's why you should be happy that Microsoft is embracing Node.js », The Guardian, (consulté le )
- « WebMatrix - Front End Web Developers take note (ASP.NET, PHP, node.js and more) » (consulté le )
- « Yahoo! Announces Cocktails Shaken, Not Stirred », (consulté le ).
- « Why Walmart is using Node.js », VentureBeat, (consulté le )
- « Clash of the Titans: Releasing the Kraken, NodeJS @paypal », fluentconf.com, (consulté le )
- « All such companies and their products in which Node.js is used » (consulté le ).
- (en) Amber Harris, « The Birth of Node: Where Did it Come From? Creator Ryan Dahl Shares the History », Devops Angle, (consulté le )
- (en) Dio Synodinos, « Deep inside Node.js with Ryan Dahl », InfoQ, (consulté le )
- (en) Kevin McCarthy, « Node.js Interview: 4 Questions with Creator Ryan Dahl », Streetwise Media, (consulté le )
- (en) Oleg Podsechin, « Ryan Dahl Interview: Part 1 », DailyJS, (consulté le )
- Guénaël Pépin, « Les nouveautés de webOS 2.0 se dévoilent », businessMOBILE.fr,
- (en) « Node.js », sur Node.js (consulté le ).
- « Ayojs/ayo », sur GitHub (consulté le ).
- « Node.js n’en finit pas de forker », Silicon, (lire en ligne, consulté le )
- Site de TestCafé
- Site de Bower
- Page officielle NCD
Annexes
Articles connexes
Liens externes
- Portail de l’informatique
- Portail de la programmation informatique
- Portail des logiciels libres