nave, version manager para node.js

September 19th, 2010

node.js es un proyecto en constante evolución, permanentemente se liberan versiones nuevas y el manejo de las mismas puede volverse un tema molesto, para lidiar con este problema podemos usar nave, el cual nos permite instalar, remover y seleccionar que versión de node.js usar por default, un concepto muy familiar si han utilizado rvm en ruby.

Para instalar nave podemos usar npm

# Instalando nave y sus dependencias vía npm
npm install nave

A continuación podrán ver el listado de opciones de nave y un ejemplo de lo fácil que es cambiar entre versiones de node.js

set default node.js version using nave

Development 1 response

Mastering Node

September 1st, 2010

En el repo de TJ Holowaychuk ya se encuentra disponible el primer draft del ebook Mastering Node, el cual va cubrir todos los aspectos fundamentales de node.js, ademas de temas como testing, deployment y frameworks de desarrollo como Express, aunque al ser un proyecto comunitario y open source es posible que se puedan ir agregando nuevos tópicos en el futuro.

Mastering Node

Development , No response

Nodul.es, indice de modulos para node.js

August 30th, 2010

Nodul.es es un indice que agrupa todos los módulos disponibles para node.js, en el podemos buscar módulos por nombre, por autor o por categoría, pudiendo ver las dependencias de los mismos e instrucciones para la instalación.

Nodu.es - Modules by name

Nodul.es - Module details

Nodul.es nació dentro del Node Knockout, el mismo acaba de terminar y en este link pueden ver la lista de los demás proyectos presentados.

Development , , , No response

node.js snippets para Gedit

August 13th, 2010

Basándome en el bundle para Textmate creado por Tj Holowaychuk, modifique y adapte esta serie de snippets para Gedit que pueden bajar desde mi repo en github.

Download node.js snippets for Gedit.

Development , No response

Express, Sinatra para node.js

August 13th, 2010

Desde su aparición, Sinatra, ha despertado la admiración de mucho, no solo de aquellos que trabajan con Ruby, sino de developers de otros lenguajes que han decidido crear micro frameworks Sinatra like para utilizar en su lenguaje favorito y portar su filosofía a otros ámbitos, en node.js tenemos a Express, el mismo esta madurando rápidamente y esta recibiendo mucho apoyo de la comunidad.

Instalación

Hay varias opciones para instalar Express, la primera opción es instalarlo desde su instalador online corriendo el siguiente comando.

$ curl http://expressjs.com/install.sh | sh
# Si necesitamos permisos adicionales
$ curl http://expressjs.com/install.sh | sudo sh

La segunda opción es usar npm (node package manager), el cual es conveniente instalar ya que muchos módulos y frameworks para node.js lo están usando como medio de distribución.

# Instalando Express y sus dependencias vía npm
$ npm install express

La ultima opción es clonar el repo de github y compilarlo.

$git clone git://github.com/visionmedia/express.git
#Actualizamos los sub modulos
$ git submodule update --init
#Compilamos
$ make install

Hello World

Vamos a comenzar con un ejemplo simple, si ven el código a continuación verán que lo primero que hacemos es cargar el modulo express, creamos un server que por convención son llamados apps, luego crearemos la ruta, la misma puede consistir en un string o en una expresión regular, seguimos con una callback y un metodo HTTP, en el ejemplo usamos un metodo GET que apunta a / y cuyo callback dispara la función que nos devuelve el Hello World.

var express = require('express'),
    app = express.createServer();
    app.get('/', function(req, res){
    res.send('Hello Worldn');
});
app.listen(3000);

Si todo sale bien, deberíamos de ver algo así.

Hello World - Express

Otro ejemplo

Ahora pasemos a un ejemplo un poco mas complejo, en el mismo usaremos un archivo con un array JSON el cual hará de datasource.

[
    { "name": "Minke" },
    { "name": "Lidewij" },
    { "name": "Eva" },
    { "name": "Helen" },
    { "name": "Wieke" },
    { "name": "Fatima" }
]

El código del ejemplo comienza cargando el modulo Express y el modulo fs encargado de acceder al file system, levantamos el server, parseamos el datasource y lo asignamos a una variable, seguimos creando las rutas, el modelo, otra ruta para / la cual mostrara las instrucciones de uso y por ultimo le decimos a nuestra app que se quede escuchando en el port 3000.

var express = require('express'),
	fs = require('fs');

var app = express.createServer();
var players = JSON.parse(fs.readFileSync('players.json', 'utf8'));

app.resource = function(path, obj) {
    this.get(path, obj.index);
    this.get(path + '/:id', obj.show);
};

var Player = {
    index: function(req, res){
        res.send(players);
    },
    show: function(req, res){
        res.send(players[req.params.id] || { error: 'player not found' });
    }
};

app.resource('/players', Player);

app.get('/', function(req, res){
    res.send([
        '<p>GET /players</p>',
        '<p>GET /players/1</p>',
    ].join('n')); 
	res.end();
});

app.listen(3000);

Es hora de correr y probar el ejemplo, primero intentemos obtener todos los registros.

# Muestra la totalidad de los registros
$ curl http://localhost:3000/players/

Ahora probemos traer un registro especifico.

#Devuelve el nombre del registro 3
$ curl http://localhost:3000/players/3

Recursos

Development , , , No response