Node.js (1) Trabajando en Windows

Si leyeron anteriores posts, ya saben que desde el año pasado estoy usando Node.js, en Windows, en Azure, y también en algún Ubuntu. Ver:

Posts en Inglés

Posts en Español

Hace unas semanas tuve el gusto de dar una charla sobre implementación de lenguajes en Javascript, en la JSConf Argentina donde usé Node. Y el pasado mes, me estuve entrenando en proyectos chicos. También quedó en video una charla virtual que dí gracias a la gente de AltNet Hispano. Ahora con este post quisiera iniciar una serie sobre Node.js.

Como primer tema, viene algo sencillo: ¿qué estoy usando para programar en Windows?

Primero, estoy usando la versión .msi que está en el sitio de Node. Uso una estable, 0.6.x, hasta que salga la 0.8.x (las 0.par son las versiones estables de Node.js). Instala Node.js en un directorio fijo de Program files, y ahí mismo tiene npm. El año pasado apareció soporte directo de Windows (antes había que compilar desde los fuentes) pero no fue hasta que apareció el npm (el manejador de paquetes “estandard” de Node.js) que se hizo cómodo el desarrollo. Les aconsejo tener la última versión. Por ejemplo, en algunas máquinas tenía una versión del año pasado, y el npm todavía tenía algunas fallas (caso concreto: al lanzar npm test, una de las tareas que tiene npm, no incluía el directorio local node_unit\.bin en el PATH, y entonces no ejecutaba tareas como “nodeunit …” aunque estuvieran instaladas).

Segundo: no codifico casi nada de mis proyectos en GitHub SIN USAR TDD. Para eso, hasta ahora usé:

- El módulo assert, que ya viene en Node.js. Ver como ejemplo AjGenesisNode y ver cómo lanzo los test en el package.json (de forma multiplataforma) gracias al script test.js.

- Nodeunit, cuando necesito tests con asincronía. Ver SimpleActors y SimpleMessages.

Tercero: cualquier editor de texto con el que estén cómodos.

Cuarto: una cuenta en GitHub para ir publicando pruebas, experimentos, pequeños ejemplos y mis primeros paquetes. Si el proyecto es un paquete, armo el package.json. Cada proyecto tienen un .gitignore, en general para no enviar el subdirectorio node_modules, de los módulos que uso, y un .npmignore que suele agregar como excluido al directorio samples

Lo importante no es tener tanto tooling como seguir bien TDD. Como voy desarrollando por “baby steps” casi nunca tengo que recurrir a depurar. Cualquier error de escritura de código, aparece enseguida con el test. Trato de no agregar línea que no tenga cubierta por test. Pueden revisar los commits de mis proyectos, he tratado de hacer commits atómicos que reflejen el agregado de tests y su puesta en verde.

Eso me ha servido para encarar refactoring, tanto pequeño como grande. Por ejemplo, ayer hice refactoring de la implementación interna de SimpleRemote y gracias a los tests no tuve mayor problema: cualquier error, quedaba reflejado en algún test que fallaba, y cuando lo solucionaba, el test pasaba a verde.

La combinación Javascript y Node.js es muy potente: por un lado, Javascript es un lenguaje con bajísima ceremonia (menos aún que Ruby, por comparar). Y Node.js tiene un excelente ecosistema de paquetes, y un manejador de los mismos (el npm) que debe ser el mejor que encontré hasta ahora.

Próximos post: ¿cómo es Node.js? ¿qué tiene de particular? ¿qué es V8? etc…

Nos leemos!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez

This entry was posted in 11699, 12081, 14005, 15035, 15550. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>