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
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
Lancement du script script_hecube_node_1.js
via cette commande
node /Users/nom-d-utilisateur/Documents/script_hecube_node_1.js |
La sortie côté navigateur
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
- Le site offciel de nodejs
http://nodejs.org/ - Creating a REST API using Node.js, Express, and MongoDB
http://coenraets.org/blog/2012/10/creating-a-rest-api-using-node-js-express-and-mongodb/ - Why Walmart is using Node.js
http://venturebeat.com/2012/01/24/why-walmart-is-using-node-js/ - Diving into Node.js – Introduction & Installation
http://www.stoimen.com/blog/2010/11/16/diving-into-node-js-introduction-and-installation/ - Node.js for Beginners
http://net.tutsplus.com/tutorials/javascript-ajax/node-js-for-beginners/ - Setting up Node.js and npm on Mac OSX
http://shapeshed.com/setting-up-nodejs-and-npm-on-mac-osx/ - Homebrew, The missing package manager for OS X
http://mxcl.github.com/homebrew/ - How to Install Node.js
http://howtonode.org/how-to-install-nodejs - Tutorial: Get started with Node.js on Mac (Beginner)
http://dannemanne.com/posts/tutorial_get_started_with_node_js_on_mac_beginner_ - Our First Node.js App: Backbone on the Client and Server – Airbnb Engineering
http://nerds.airbnb.com/weve-launched-our-first-nodejs-app-to-product - How We Built an iOS App, an Android App and a Node.js API in 20 Hours | Blog – Semantics3
http://blog.semantics3.com/how-we-built-an-ios-app-an-android-app-and-a-node-js-api-in-20-hours/ - Jeff Mesnil — HTML5 Web Application for iPhone and iPad With node.js
http://jmesnil.net/weblog/2010/11/24/html5-web-application-for-iphone-and-ipad-with-node-js/ - Real-Time Geolocation Service with Node.js | Codrops
http://tympanus.net/codrops/2012/10/11/real-time-geolocation-service-with-node-js/ - Node Tuts – Episode I – Node.js Introduction de Pedro Teixeira
http://vimeo.com/52691590 - Real-Time Geolocation Service with Node.js | Codrops
http://tympanus.net/codrops/2012/10/11/real-time-geolocation-service-with-node-js/ - Node.js par Beardsley (“B”) Ruml de http://ruml.com
http://cdn.cs50.net/2011/fall/seminars/Node_js/Node_js.pdf - Harvard University’s introductory computer science course
https://www.cs50.net/ - NodeCloud – Node.js resources
nodecloud.org - The Node Beginner Book » A comprehensive Node.js tutorial
http://nodebeginner.org - Mastering Node
http://visionmedia.github.com/masteringnode/book.html - Node Tuts screencasts
http://nodetuts.com - How To Node
http://howtonode.org - How to log in node.js
http://docs.nodejitsu.com/articles/intermediate/how-to-log - Javascript, node.js and for loops
http://blog.mixu.net/2011/02/03/javascript-node-js-and-for-loops/ - De très nombreuses ressources sur Node.js
http://stackoverflow.com/questions/2353818/how-do-i-get-started-with-node-js