No es la primera ni la segunda vez que hablamos en Genbeta Dev sobre Node.js, la librería de programación asíncrona en JavaScript para V8. En la serie introductoria al desarrollo usando la misma, hemos aprendido a crear un sencillo servidor web que maneja sencillas peticiones GET y POST implementando el servicio web desde abajo.
Ahora que comprendemos cual es el funcionamiento a bajo nivel de un servicio web, estamos preparados para conocer a express una librería/framework de alto nivel de desarrollo web para Node.js. En esta introducción a la programación asíncrona con Node.js vamos a introducirnos en el desarrollo web con express.js.
Express está construido sobre Connect un framework extensible de manejo de servidores HTTP que provee de plugins de alto rendimiento conocidos como middleware. De hecho, gran parte de la popularidad de express es gracias a Connect.
Primeros pasos
Antes de nada tenemos que instalar express en nuestro sistema. Para ello, vamos a hacer uso de la aplicación de instalación de paquetes para node.js npm que debemos de haber instalado en nuestro sistema previamente. Vamos a realizar una instalación global de la misma:
npm install -g expressEsto nos permitirá acceder a la utilidad de linea de comandos express así como al uso del framework en nuestras aplicaciones.
Inicio rápido
La manera más rápida de empezar con express, es utilizando la utilidad de línea de comandos con el mismo nombre para generar una aplicación:
express mi_proyectoExpress ha generado una estructura de proyecto general por nosotros con la que podemos empezar a trabajar, pero antes de ello debemos instalar las dependencias necesarias, desde el directorio mi_proyecto ejecutamos:
cd mi_proyecto
npm install -dEsto instalará las librerías necesarias para poder ejecutar la nueva aplicación, estas son
express
y jade
(un motor de templates para node.js). Una vez instalado podremos iniciar nuestro servicio:node app.jsPodemos dirigir nuestro navegador a http://localhost:3000 y ver nuestro nuevo servidor web express, aunque en este momento, no hay mucho que ver la verdad.
Express server listening on port 3000 in development mode
Si eres curioso o curiosa puedes editar el archivo app.js para ver lo que la utilidad de línea de comandos a creado para nosotros.
Crear Servidores
Los servidores se crean con instancias de la clase express.HTTPServer
. Para crear una de ellas tan solo debemos invocar al método express.createServer()
. No existe una “forma correcta“ de hacer esto, de hecho se puede hacer de muchas maneras:
var app = require('express').createServer();
...
var express = require('express');
var app = express.createServer();
Cualquiera de las dos formas anteriores es válida, no importa cual usemos, lo importante es crear una instancia de express.HTTPServer
. Una vez tenemos nuestra instancia tan solo tenemos que crear al menos una ruta y poner el servicio a escuchar en algún puerto:var app = require(‘express’).createServer();El código anterior es suficiente para crear el siguiente resultado:
app.get(’/’, function(req, res) { res.send(‘Hola Genbeta Dev’);
});
app.listen(3000);
Como podéis comprobar, es algo bastante más sencillo que hacerlo a mano como vimos anteriormente.
Configuración
Express admite diferentes entornos como producción y desarrollo. Se puede utilizar el método configure
para fijar las opciones que queremos para cada entorno. El método admite un parámetro de tipo texto con el nombre del entorno.
En caso de no pasar un nombre de entorno al método, la configuración será usada en todos los entornos disponibles. En el siguiente ejemplo vamos a crear dos entornos de desarrollo y tres configuraciones, una para el entorno de producción, otra para el entorno de desarrollo y otra para todos los entornos:
app.configure(function() { app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router()); app.use(express.static(__dirname + ‘/public’));Para entornos similares pueden pasarse varios nombres de entornos:
});
app.configure(‘development’, function() { app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure(‘production’, function() { app.use(express.errorHandler());
});
app.configure(‘test’, ‘production’, function() { // configuraciónPara configuraciones internas o arbitrarias pueden usarse los métodos
});
set(key, val)
, enable(key)
, disable(key)
:app.configure(function() { app.enable(‘esto’); app.disable(‘aquello’); app.set(‘esto’, false);Podemos utilizar la variable de entorno
});
NODE_ENV
:$ NODE_ENV=development node app.jsDe momento esto es todo por hoy, en el próximo artículo indagaremos un poco más en este framework para aprender a usar los ruteos y otras cosas.
En Genbeta Dev | Introducción a la programación asíncrona con Node.js