Node.js pour les nuls

Dans cet article je vais vous proposer une petite initiation à Node.js. C'est vrai que trouver toutes les ressources nécessaires lorsque l'on débute n'est pas forcément facile. Il est préférable d'avoir quelques connaissances en JavaScript pour lire cet article. Dans le cas contraire, je vous invite à suivre cet excellent tutoriel : Dynamisez votre site web avec Javascript !.

Introduction

NodeJS est un programme qui va vous permettre de coder en JavaScript côté serveur. Il est basé sur V8, le moteur JS de Google Chrome. Notons que ses input/output sont asynchrones. Cela signifie que lorsque par exemple vous voudrez lire un fichier du disque dur, vous direz à votre programme « Hey lis moi ça et rappelle moi quand tu as finis », pendant ce temps-là celui-ci continuera de gérer les autres requêtes etc. Imaginons que lorsque vous devez délivrer une page, celle-ci nécessite deux requêtes SQL de 300ms chacune et lire un fichier txt (100ms), avec PHP vous auriez dû faire une requête SQL (500ms), puis une autre (500ms), puis lire le fichier txt (100ms). Votre serveur aurait mis 1100ms à rendre la page. Et bien là avec NodeJS vous demandez tout en même temps et vous renvoyez la page lorsque les opérations sont finies. Votre page sera renvoyée en 500ms (temps de l'opération la plus longue). Vous vous demanderez bientôt comment vous faisiez avant ;-) Cependant, si vous en avez besoin, vous pouvez parfaitement lancer ces mêmes fonctions en synchrones.

Une autre chose à savoir si vous venez de PHP, c'est que Node.js est aussi un serveur HTTP. Lorsque vous programmez avec PHP, vous avez besoin d'apache pour gérer les requêtes HTTP. Et bien là plus besoin d'Apache, NodeJS gère aussi les requêtes HTTP comme un grand. Pour votre culture générale, sachez qu'en production, beaucoup de gros sites utilisent nginx ou apache comme proxy par-dessus.

Les indispensables

  • NPM Une des plus grandes forces de Node.js : NPM. C'est un système de paquets où de nombreux développeurs ajoutent des modules prêts à l'emploi. Le nombre de module est vraiment énorme, c'est une vraie mine d'or. Cela vous évitera de nombreuses nuits à coder des choses déjà codées par d'autres. Vous voulez récupérer la météo de Google ? Paf une recherche et vous avez un module tout fait qui vous propose une API simpliste.
  • Express Le serveur web le plus connu. Relativement simpliste, il reste néanmoins puissant.
  • socket.io Pour faire du real-time cross-browser entre votre serveur et vos clients.
  • Async Pour gérer un grand nombre de tâches asynchrones en simultanées.

Sites pour apprendres

Autres

Comme je l'ai dit précédemment, un gros atout de Node est son système de modules. N'hésitez jamais avant de coder quelque chose si quelqu'un ne l'a pas fait avant vous.

Vous pouvez utiliser avec Node.js n'importe quel système de base de données ; MySQL, ProstrgreSQL, MongoDB, CouchDB, Redis, et pleins d'autres. Vous trouverez les drivers pour les utiliser sur NPM.

Bref je ferais sûrement d'autres articles dessus pour vous en parler. Si vous avez des questions, n'hésitez pas à laisser un petit commentaire. Vous pouvez aussi me suivre sur Twitter, je fais quotidiennement ma petite veille en vous partageant les liens les plus intéressants.