1 of 11

Node.JS & Express

Web Event Lyon #4 - Nicolas Chambrier

2 of 11

Qui suis-je ?

  • Nicolas Chambrier

3 of 11

Qu'est Node.JS ?

  • un runtime JavaScript
  • une API agréable
    • CommonJS
    • HTTP, Socket, Filesystem, …
  • rapide grâce à V8
  • porteur d'un « nouveau » paradigme:�programmation asynchrone
  • porté par une énorme communauté

Démo: REPL

4 of 11

Que n'est pas Node.JS

  • idéal pour toutes les situations
    • servir des fichiers statiques
    • faire un reverse-proxy
    • … toutes ces problématiques ont déjà de meilleures solutions !
  • un framework « Web »
    • ne cherchez pas symfony.js
  • un cancer

Démo: non, juste des trolls

5 of 11

Que retenir de Node.JS ?

  • CommonJS permet NPM, et NPM est le meilleur gestionnaire de package.
  • Node.JS utilise nativement un seul cœur
    • La « single-threaded event loop » est un choix de conception (voir cluster-server)
  • L'esprit des modules est « do one thing and do it well »
    • gros-framework-mvc-a-tout-faire.js n'existera pas

Démo: npm & modules

6 of 11

Qu'est Express ?

  • Écrit par le (trop?) prolixe TJ Holowaychuck
  • Un « micro-framework » MVC
  • Basé sur les middlewares
  • Powered by Connect

Démos:

- hello, world

- middlewares

- templates

7 of 11

Que n'est pas Express

  • Un fourre-tout
    • Logging à base de console.log
    • Configuration à la main
    • … il y a des modules pour ça!�
  • Figé
    • Express 3.0 arrive et va tout péter

8 of 11

Que retenir d'Express

  • Un serveur web
  • Démarrage rapide, résultats directs
  • Les middlewares
  • Socket.IO
  • Les composants annexes: moteur de template, configuration, logs…

Démo si on a le temps: WebSockets

9 of 11

Les alternatives

  • Pas de framework → adapté pour un service limité, pourquoi pas?�https://github.com/isaacs/npm-www
  • Flatiron → Un ensemble de composants�http://flatironjs.org/
    • On peut les utiliser avec Express: nconf, winston…
  • Plein d'autres�https://github.com/joyent/node/wiki/modules
    • Ma sélection: Locomotive, Tower, RailwayJS, Flatiron… ne vous privez pas de tous les tester :)

10 of 11

Bonus: faire sa veille NPM

  • Vous êtes accroc? Flux RSS de NPM!
  • Comment je trie:
    • Le module a un dépôt renseigné (non? Éliminé!)
    • Le module a un README complet (au moins une présentation correcte)
    • Le module a des tests unitaires (pratique pour vérifier l'état)
    • L'auteur est connu (et bon)
    • Le module est encore actif (la visite des « issues » est utile)
    • → OK, il peut éventuellement être testé :)
  • Pet project: tri automatique des modules

11 of 11

Questions ?

Non, parce qu'on n'aura déjà pas eu le temps de voir les démos :D