Trozos de imaginería cultural profunda que se han desprendido y adquirido vida propia

Meteor simplificando nodejs

17 Mar 2013

Qué difícil es esto de mantener un blog con un poco de ritmo, y no será por la de cosas interesantes que quiero compartir, pero así son las cosas

Hoy quiero hablaros de Meteor según los propio creadores es la mejor forma de crear aplicaciones, si esta frase te parece pretenciosa, al loro con esta:

Meteor es un entorno ultra-simple para el desarrollo de sitios web modernos. Lo que antes tardaba semanas, incluso con las mejores herramientas, ahora te cuesta horas con Meteor

Pues, por muy increible que parezca esta frase, en cuanto te introduces un poco en Meteor ves que puede ser real.

Lo primero que sorprende es su instalación:

curl https://install.meteor.com | /bin/sh

Así se crea un proyecto:

meteor create myapp

Ejecutar de forma local el proyecto:

 $ cd myapp
 $ meteor
 Running on: http://localhost:3000/

Meteor ofrece la posibilidad con un comando de hacer un deploy del proyecto en su propia infraestructura: $ meteor deploy myapp.meteor.com

Se intuye que esta puede ser una forma de moneratización del proyecto, al más puro estilo nodejitsu. Lo cierto es que la simpleza de meteor tanto en la instalación como a la hora de ponerte a trabajar hacen el proyecto muy atractivo.

Meteor es un stack completo, viene con todo lo necesario para ponerte a trabajar, funciona gracias a nodejs tanto en la parte de la ejecución como en el servidor.

Aunque Meteor usa nodejs intensivamente su forma no es tan ortodoxa como en otros frameworks (dervy, flatlirojs ), en parte por el uso que hace de fibers para el control de la asincronía algo no exento de polémica. Otro de los temas que ha sorprendido es que su sistema de paquetes no sea compatible con npm, les da más control sobre lo que entra en Meteor pero impide aprovecharse de la gran cantidad de paquetes en npm. De todos modos esto pinta que cambiará

Veamos ahora los 7 principios según su propia web:

Meteor tiene cosas curiosas, que permiten hacer "webs" tambien de forma curiosa, una de las que más sorprenden es lo que ellos llaman programación reactiva el ejemplo clásico es con una hoja de calculo, los datos introducidos van modificando un campo concreto.

Profundizando

La función Deps.autorun en relación con session permiten el binomio, computación ractiva + código de datos reactivos. Los argumentos de la funcion Deps.autorun se ejecutan la primera vez, pero si la sesión currentRoomId cambia se vuelven a ejecutar. En la documentación explican esto de una forma más clara.

Parte de esta magia es debido a que Meteor usa mongodb para la persistencia de datos, pero con un matiz. Esta persistencia también esta en el Cliente. Meteor mediante un sistema de Publicación/suscripción decide qué colecciones son y cómo son sincronizadas en el cliente, y el cliente tiene en cache toda la información que se ha sincronizado. Si a esto le unimos la movida de la "programción rectiva", pues se intuye su potencial.

Otras de las claves es el uso que hace de handlebarsjs para el sistema de plantillas, su integración es exquisita. Si algo se le puede achacar a backbone (u otros frameworks similares) es su extraño uso de la gestión de plantillas. En Meteor la cosa es tal que así:

En el body podemos llamar a nuestras plantillas de esta manera ```y meteor ya sabe que tiene la plantilla