6 choses à savoir sur Node.js

JavaScript est en train de dévorer le monde, avec de nouveaux outils et améliorations arrivant à un rythme effréné. Avec Node.js, un système d'exécution open source inventé en 2009 par Ryan Dahl, cette portée s'est étendue au côté serveur.

Node.js est devenu extrêmement populaire, avec des codeurs partout dans le monde qui l'utilisent pour créer des API et construire une nouvelle matrice d'interopérabilité sur Internet. Joyent est le sponsor principal de Node.js depuis le début. Dans le New Tech Forum de cette semaine, Ben Wen, vice-président du marketing produit chez Joyent, décrit six choses que vous devez savoir sur le phénomène qui secoue le développement du backend. - Paul Venezia

Node.js est un système d'exécution pour créer (principalement) des applications côté serveur. Il est surtout connu comme un moyen populaire pour les codeurs JavaScript de créer des API Web en temps réel.

Mais Node.js n'est pas un framework JavaScript; en effet, plusieurs auteurs ont écrit d'excellents frameworks spécifiquement pour Node.js, notamment Express.js, Restify.js et Hapi.js. Alors, quel est exactement ce phénomène qui se retrouve dans les applications Web, les wrappers de systèmes d'exploitation, les microcontrôleurs et les robots?

À la base, Node.js est un moteur de serveur dépouillé et hautement personnalisable - un proto-serveur, si vous voulez - parce que hors de la boîte, il ne fait rien tant que vous ne l'avez pas configuré. Ce proto-serveur traite en boucle, prêt à accepter et à répondre aux demandes. Chacune de ces demandes peut elle-même lancer d'autres demandes à une autre partie du système, par exemple pour lire un fichier sur le disque ou pour envoyer un signal pour faire tourner un moteur sur un bras de robot. Cette boucle, connue sous le nom de boucle d'événements, est la partie "runtime".

Node.js est livré avec des connecteurs et des bibliothèques performants tels que ceux relatifs à HTTP, SSL, à la compression, à l'accès au système de fichiers et au TCP et UDP bruts. JavaScript, déjà réglé pour l'environnement de boucle d'événements d'un navigateur Web pour l'interface graphique et les événements réseau, est un excellent langage pour le câblage de ces connecteurs. Vous pouvez attacher des connecteurs sur la boucle d'événements presque aussi facilement que vous pouvez assembler des pièces Lego. Cela vous permet de créer un serveur Web simple et dynamique en seulement quelques lignes de JavaScript.

En bref, Node.js est un système d'exécution qui facilite la création d'un réseau ou d'autres serveurs d'applications événementiels. Voici les six choses que vous devez savoir à ce sujet.

1. JSON a gagné

JSON (JavaScript Object Notation) est un format d'échange de données pratique, composé et très populaire. JSON a permis aux développeurs JavaScript de créer rapidement des API et de favoriser l'interopérabilité à grande échelle - un objectif clé pour les codeurs Node.js. La simplicité absolue de JSON peut être exprimée dans seulement cinq diagrammes d'analyse de chemin de fer, notamment sans le lissage conscient de XML et de ses amis intrigants (SOAP, XSD, WS- *, RELAX-NG et leurs réunions de comité interminables).

JSON et JavaScript se sont renforcés mutuellement. À l'époque des débuts du Web, les données dynamiques du navigateur devaient être manipulées, filtrées et exploitées par le seul langage non plug-in raisonnablement compréhensible disponible: JavaScript. Quel que soit leur format original présentable sur le réseau, les données devaient être rassemblées dans un objet JavaScript. La dépendance à JSON pour la description des données à usage général a donné naissance à des bases de données NoSQL orientées document telles que MongoDB et CouchDB. Tout est JSON tout le temps aujourd'hui.

2. JavaScript est partout

JavaScript est un langage C-like original et orienté objet. C'est le seul choix pour développer des applications dans le navigateur, avec un nouveau cadre introduit chaque semaine pour séduire les développeurs. Et avec Node.js, JavaScript s'est répandu sur le serveur. Les équipes de mise en œuvre concurrentes ont fait avancer les interpréteurs JavaScript, de sorte que le moteur V8 de Google soit respectablement rapide - assez rapide pour résider au cœur de Node.js.

JavaScript a également la capacité interne de gérer le mécanisme de boucle d'événements de manière simple. D'autres langages ont cette capacité, qui sont utilisés par leurs propres systèmes événementiels. Python a Twisted et Ruby a EventMachine. Mais à cause de l'histoire, ces deux systèmes de boucle d'événements sont livrés avec des moyens relativement faciles de commettre un type particulier d'erreur de performance, tandis que JavaScript reste relativement exempt de ce péril.

JavaScript fonctionne également dans de nombreux environnements OS, ayant historiquement dû les prendre en charge dans le navigateur. Ceci, avec la bibliothèque libuv pour aider à éliminer certaines des différences du système d'exploitation, signifie que Node.js a une large empreinte.

Mais la principale force de la migration de JavaScript vers le serveur est humaine. Les programmeurs doivent faire moins de changement de contexte mental entre un navigateur Web et le serveur. Il y a même des efforts pour unifier les environnements entre le client et le serveur afin que le code puisse fonctionner aussi bien dans les deux endroits, simplifiant encore le modèle et conduisant à une productivité accrue.

3. Le partage est encouragé

La philosophie de la communauté Node.js est «partager joyeusement». Il est terriblement facile de partager des paquets de code de bibliothèque - techniquement, culturellement, procéduralement et légalement. Le gestionnaire de packages de nœuds est inclus avec Node.js et est devenu un référentiel de près de 50000 packages, ce qui rend probable qu'un autre développeur a déjà fourni une solution à votre problème, ou même des solutions moins courantes.

La philosophie d'espace de noms de Node.js est essentiellement l'absence d'un, permettant à tout auteur de publier sous un nom de module inutilisé dans le référentiel public partagé. Le partage de code sous la licence open source du MIT est fortement recommandé dans la communauté, ce qui rend également la pollinisation croisée du code relativement sans souci (et sans avocat) du point de vue de la propriété intellectuelle. Enfin, la communauté est très engagée dans la liaison de bibliothèques C intéressantes telles que la vision par ordinateur (OpenCV) et la bibliothèque de caractères optiques open source Tesseract. Ce dernier, par exemple, rend possible des projets de week-end comme Imdex qui traitent les images du Web afin qu'elles puissent être automatiquement recherchées pour le contenu écrit.

4. Node Package Manager fonctionne largement

En parlant de gestion des dépendances de bibliothèque, le gestionnaire de packages de nœuds mérite d'être appelé. Node Package Manager est la racine de presque tous les systèmes de déploiement pour Node.js et sous-tend les nombreux fournisseurs PaaS (platform-as-a-service) pour Node.js, ce qui facilite en fait le transfert d'applications plus petites entre les fournisseurs. Sa gestion simple et fiable des packages a permis à l'écosystème Node de se développer extrêmement bien dans l'histoire récente, au point que la fonction publique sous-jacente doit maintenant passer au niveau suivant.

5. Minimalisme «piles non incluses»

Les applications Node.js et Node.js Core lui-même sont décomposés en petits modules qui sont composés et partagés. Chaque paquet et outil peut être étroitement cadré et conçu pour être gérable. Ceux-ci peuvent ensuite être cuits ensemble - souvent sans trop de pétrissage inutile. La faible barrière et la nature insouciante de la création d'un module encourage également l'expérimentation dans la communauté, et il y a un peu de chevauchement et d'expérimentation dans la population de packages. Lorsqu'il est bien exécuté, chaque paquet gère généralement une tâche (par exemple, node-optimist.js: 'light-weight [command-line] option parsing').

6. Instrumentation

Enfin, Node.js est bien instrumenté pour une utilisation en production. Cela signifie qu'il existe des outils pour aider à amener une application à une disponibilité et à des performances de production complètes. Comme pour toute technologie en cours de maturation, il existe des domaines dans lesquels davantage de documentation, d'outils et de meilleures pratiques pourraient être utiles. Mais alors que Node.js se dirige vers sa prochaine version majeure, il est sur des bases assez solides.

Nœud en contexte

Si vous connaissez JavaScript, Node.js est une rampe d'accès douce vers l'informatique asynchrone pour le Web. Et il se trouve que Node.js est adapté pour résoudre des problèmes Web exactement de ce type: défis d'intégration et de collage, avec des appels en cascade à l'API après l'API.

Où Node.js ne fonctionne-t-il pas si bien? Ce n'est pas tout à fait approprié dans les endroits où un calcul à thread unique va être le hold-up, comme certaines sortes d'approximations ou de classifications successives. Dans ces cas, il est plus efficace pour Node.js de déposer la requête vers une bibliothèque indépendante dédiée à la tâche, où elle peut être distribuée sur des centaines ou des milliers de processeurs.

Node.js mûrit rapidement et est déployé dans de plus en plus de systèmes critiques et de revenus critiques, tels que les infrastructures de commerce électronique Black Friday. Il est facile de démarrer avec Node.js, et pourtant Node.js est suffisamment profond pour gérer les complexités Web modernes. Si vous créez votre site Web de nouvelle génération - en particulier des API pour l'intégration mobile et Web - ou si vous créez quelque chose de nouveau qui dépend des services sous-jacents lui-même, Node.js est un système d'exécution qui pourrait très bien fonctionner pour vous.

New Tech Forum offre un moyen d'explorer et de discuter des technologies d'entreprise émergentes avec une profondeur et une ampleur sans précédent. La sélection est subjective, basée sur notre choix des technologies que nous pensons importantes et qui intéressent le plus les lecteurs. n'accepte pas les supports marketing pour la publication et se réserve le droit de modifier tout le contenu fourni. Envoyez toutes vos demandes à [email protected]

Cet article, «6 choses à savoir sur Node.js», a été publié à l'origine sur .com. Pour les dernières nouvelles de la technologie commerciale, suivez .com sur Twitter.