Node, JavaScript – Introduction rapide à la bibliothèque JavaScript Node.js



Beaucoup d’effervescence autour de cette librairie javascript, qui à lire certains semble être la nouvelle Next Big Thing en matière de développement notamment dans la conception et le développement d’applications web. Beaucoup de poids-lourds du web l’utilisent notamment aux Etats-Unis, pour information on peut citer Airbnb, Walmart…

La définition donnée par la site officiel de nodejs.org

Tout d’abord, revenons à la source si l’on peut dire en donnant la définition exacte de ce qui figure sur le site officiel de cette libraire conçue par Ryan Dahl, une sorte de John Resig bis, en terme d’innovation !

Node.js is a platform built on Chrome’s JavaScript runtime
for easily building fast, scalable network applications. Node.js
uses an event-driven, non-blocking I/O model that makes it
lightweight and efficient, perfect for data-intensive real-time
applications that run across distributed devices.

Bon, il est certain qu’une fois la définition énoncée, on est pas plus avancée puisque c’est relativement abscons surtout si on est pas familier du développement. On va donc tenter avec des mots simples de définir ce qu’est Node.js et surtout voir les implications éventuelles en terme de développement et d’utilisation, le tout avec des explications et une illustration concrète tirée du blog de l’équipe de développement de Airbnb (@AirbnbNerds) qu’ils en soient remerciés.

Pour donner une définition vraiment basique, Node.js est un environnement d’exécution de programme adossé au Chrome’s JavaScript runtime qui s’exécute indifféremment côté client ou côté serveur. C’est ce dernier point qui nous intéresse. Comme le dit les gens de Airbnb, cette unification via Node.js de la logique d’une application fait que tout marche indifféremment côté client ou côté serveur, cela annihile totalement la contrainte de la plate-forme, plus efficient en terme de développement donc on peut se préoccuper un peu plus du UX design, du SEO… bref tout le sel d’une application.

C’est en substance ce que nous dit cette citation du Blog de (@AirbnbNerds)

[…] in theory, if we have a JavaScript runtime on the server, we should be able to pull most of this application logic back down to the server in a way that can be shared with the client. Then, as a developer you just focus on writing application code. Your great new product can run on both sides of the wire, serving up real HTML on first pageload, but then kicking off a client-side JavaScript app. In other words, the Holy Grail.

Source : http://nerds.airbnb.com/weve-launched-our-first-nodejs-app-to-product

Les gens de (@AirbnbNerds) y voient même le Graal et Ryan Dahl en serait le messie ! Et ils le prouvent en proposant une capture de leur dernière application construite sous Node.js

Node, JavaScript - Introduction rapide à la bibliothèque JavaScript Node
Copyright © AirbnbNerds
Source : http://nerds.airbnb.com/weve-launched-our-first-nodejs-app-to-product

Cet enthousiasme semble d’ailleurs partagé par d’autres, une présentation de Node.js par Beardsley (« B ») Ruml de http://ruml.com à la Harvard University’s introductory computer science course n’y va pas avec le dos de la cuillère en terme d’éloges… On le cite in-extenso, carrément le futur du Web.

Why is node.js « the future » of web applications?
Web evolution:

  • a series of linked static pages;
  • pages which were dynamically generated from a
    database (templating);
  • pages which send significant amounts of new data and can ask for updates for parts of a page without refreshing the page (Ajax);
  • pages which need constant communication;
  • updates without asking; many browsers talking
    to each other (chat, backchannel);

Source : http://cdn.cs50.net/2011/fall/seminars/Node_js/Node_js.pdf

Passer cette euphorie contagieuse, on est en doit de se demander si on ne passe pas à côté de quelque chose. Un bémol, les américains sont les rois du storytelling et ne jurent que par la nouveauté. On va donc montré comment installer Node.js et surtout on vous invite à suivre de prés de nouveau venu…

Installer Node.js et jouer un peu…

Comme, nous sommes assez feignants, on a décidé de passer par Homebrew pour installer Node.js forcement, vous allez devoir installer Homebrew sur votre Mac. C’est assez facile pour une fois.
Homebrew est présenté non comme le « chainon manquant » mais comme le « package manquant ». Ecrit en Ruby, Homebrew permet de rapidement et facilement compiler des logiciels sur un Mac. Vous aurez besoin aussi d’installer les Developer Tools pour Mac qui sont installées avec Xcode. Xcode est disponible gratuitement.
Source : http://mxcl.github.com/homebrew/

Installer Homebrew

ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"

Source : http://mxcl.github.com/homebrew/

Lancer la commande d’installation de Node.js sous Homebrew

brew install node

Dans le terminal, vous pouvez lancer ce type de commande, soit en vous plaçant dans le répertoire, soit en étant à la racine de votre disque dur.

Une fois Node.js installé via Homebrew, on peut vérifier que Node.js est opérationnel en affichant la version via node -v
Node, JavaScript - Introduction rapide à la bibliothèque JavaScript Node

Lancement du script script_hecube_node_1.js via cette commande

node /Users/nom-d-utilisateur/Documents/script_hecube_node_1.js


Node, JavaScript - Introduction rapide à la bibliothèque JavaScript Node

La sortie côté navigateur
Node, JavaScript - Introduction rapide à la bibliothèque JavaScript Node

La source de notre script rikiki script_hecube_node_1.js

 
	/* 
	Node, JavaScript - Introduction rapide à la bibliothèque JavaScript Node
	More on http://social.hecube.net/
	*/
	/* 
	NOTE - To launch the script, type the following command in console :
	node /node /Users/nom-d-utilisateur/Documents/script_hecube_node_1.js
	*/
	var sys = require("sys"),
	my_http = require("http");
	my_http.createServer(function(request,response){
 
 
		sys.puts("Le serveur est touché par un "hit" par l'affichage de la page http://127.0.0.1:8080/ via script_hecube_node_1.js");
 
 
		response.writeHeader(200, {"Content-Type": "text/plain"});
		response.write("Se servir de node avec script_hecube_node_1.js");
		response.end();
	}).listen(8080);
	sys.puts("Server Running on 8080");
	/* show message in terminal but with the console command */
	console.log('Voir à l'adresse suivante : http://127.0.0.1:8080/');

En savoir plus