RSS Feed

Creando un server con ExpressJS

0

marzo 15, 2012 by - @pjnovas

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.