Primeros pasos con Express.js
El primer paso para usar Express.js es añadirlo al proyecto actual de Node.js para ello usaremos Npm:
npm insstall --save express
Luego crearemos un sript sencillo con el siguiente código:
var express = require('express');
var app = express();
app.set('port', process.env.PORT || 4000);
// pagina de error 404 personalizada
app.use(function(req, res){
res.type('text/plain');
res.status(404);
res.send('404 - Not Found');
});
// pagina de error 500 personalizada
app.use(function(err, req, res, next){
console.error(err.stack);
res.type('text/plain');
res.status(500);
res.send('500 - Server Error');
});
//Lanzamos el servidor
app.listen(app.get('port'), function(){
console.log( 'Express started on http://localhost:' +
app.get('port') + '; press Ctrl-C to terminate.' );
});
Con este código pondriamos a nuestra disposición una instancia de Express.js.
Si quiseramos añadir rutas a la escucha solo tendríamos que usar la función get():
app.get('/', function(req, res){
res.type('text/plain');
res.send('página principal');
});
app.get('/about', function(req, res){
res.type('text/plain');
res.send('Página de descripción');
});
Estas dos rutas hay que añadirlas antes de las funciones de error 400 y error 500 pues nuestro servidor de Express.js comenzará a buscar desde la primera hasta la última, si cuando recibe una petición su primer función a ejecutar es la 400 supondrá que no hay otras rutas en la aplicación y lanzará la respuesta de que no se ha encontrado la ruta seleccionada.
En este caso estamos añadiendo la ruta principal y la típica página de about. cabe decir que estamos enviando los textos planos descriptivos de cada aplicación. 'página principal' y página de despcripción.
Si quisieramos vincular la ruta de cada petición a un fichero web con código html simplemente deberíamos de enlazarnos a su ruta:
//Se añade el directorio raiz del fichero
app.use(express.static(__dirname));
//se añaden los enlaces
app.get('/', function(req, res){
res.render('index.html');
});
//se añaden los enlaces
app.get('/about', function(req, res){
res.render('about.html');
});
de esta forma solo tendríamos que moldear nuestros ficheros html a placer para mostrar cada una de las páginas.
Express.js está preparado para mostrar webs dinámicas, para ello utiliza los renders jade o handlebars. Yo personalmente me decanto por el segundo, pues tiene una lógica muy parecida a Jekill en Ruby On Rails. Esta clase de render html son muy útiles a la hora de generar blogs simples o demás contenido dinámico que vaya a generar código html en tiempo de respuesta a petición. Nosotros en este caso usaremos angular.js para los contenidos dinámicos de nuestra web, por lo que solo tendremos que enlazar el contenido estático y servirnos de Express.js para generar la API REST responderá a nuestras peticiones