Creando un server con ExpressJS
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.