ExpressJS es un web framework que envuelve a ConnectJS. Con ExpressJS podemos crear un server, manejar las requests, responses y mucho mas, pero antes de meternos veamos un momento la estructura del sitio (post relacionado):

/app-root
  /models
  /controllers
  /views
  /public
    /images
    /styles
    /scripts
  /tests
  /utils
  app.js
  package.json
 

En app.js vamos a crear nuestro servidor, pero ExpressJS es un NPM, asi que primero lo instalamos

npm install express
 

O … mejor todavia, empecemos organizadamente a armar nuestro package.json:

{
  "name": "SitioWebConNodeJS",
  "version": "0.0.1",
  "dependencies": {
    "express": ">=2.5.8"
  }
}
 

Ahora simplemente podemos hacer:

npm install
 

Solito se va a encargar de bajar las dependencias de nuestro proyecto leyendo el package.json. Es importante mantener nuestro package.json actualizado, ya que sirve como “mapa” de nuestras dependencias para NPM, Hosting, nosotros mismos, etc …

Bueno, ahora que tenemos instalado el NPM de ExpressJS podemos armar nuestro app.js:

//creamos una variable para el módulo

  var express = require('express');

  //creamos el server

  var app = express.createServer();
  
  //nuestra ruta principal del sitio

  app.get('/', function (req, res){
    res.send('Aló aló Mundo!');
  });

  //ponemos el server en escucha en un puerto

  app.listen(1666);
  console.log('Server Express iniciado en %d', app.address().port);
 

Bastante simple, ahora iniciamos el server

node app.js
 

Abrimos el browser en http://localhost:1666 y se va a disparar el único get que tenemos.

app.get('/', function (req, res){
    res.send('Aló aló Mundo!');
  });
 

Se parece bastante a lo que haciamos con el módulo Core http de NodeJS: declaramos una funcion callback que recibe la request y el response y despues simplemente enviamos un texto al response.

Asi como tenemos el get, podemos declarar cualquiera de los verbos de HTTP, por ejemplo:

app.get('/proyectos/:id', function (req, res){
     res.send('Este es el proyecto ' + req.params.id);
  });

  app.put('/proyectos/:id', function (req, res){
     res.send('Actualizando proyecto ' + req.params.id);
  });

  app.post('/proyectos/nuevo', function (req, res){
     res.send('Creando proyecto');
  });
 

Por último tenemos la configuracion de ambientes. En ExpressJS configuramos los ambientes con el metodo .configure()

//si no especificamos un ambiente, se aplica para todos 

  app.configure(function(){
    //configuración común para todos

  });

  app.configure('develpment', function(){
    //configuracion para desarrollo

  });

  //podemos especificar mas de un ambiente para la configuración

  app.configure('stage', 'production', function(){
    //configuracion para stage y producción

  });
 

Ejecutamos la app para el entorno Productivo:

EXPRESS_ENV=production node app.js
 

Es importante usar el ambiente production cuando está productivo nuestro sitio, porque algunos mecanismos de cache se funcionan sólo en ese estado.