Desde Telefónica I+D se nos pidió al grupo de uLab UPC que hiciésemos una prueba de concepto del framework MeteorJS, un vez realizada hemos creído oportuno compartir con vosotros que es y como funciona, ya que se trata de una tecnología innovadora que puede resultar muy útil en aplicaciones web que actúen en tiempo real.

Desde Telefónica I+D se nos pidió al grupo de uLab UPC que hiciésemos una prueba de concepto del framework MeteorJS, un vez realizada hemos creído oportuno compartir con vosotros que es y como funciona, ya que se trata de una tecnología innovadora que puede resultar muy útil en aplicaciones web que actúen en tiempo real.

¿Qué es MeteorJS?

MeteorJS es un framework JavaScript basado en NodeJS que nace con el objetivo de automatizar y simplificar la programación de aplicaciones web que actúan en tiempo real. La comunicación se realiza en tiempo real mediante DDP (Distributed Data Protocol), un protocolo diseñado para trabajar con colecciones de documentos JSON facilitando la creación, modificación, eliminación y visualización de este tipo de documentos.

Meteor también proporciona dos bases de datos, en el lado del cliente incorpora una caché DB y una MongoDB en el lado servidor.

El sistema de plantillas de Meteor está diseñado para guardar en qué datos se accede desde cada plantilla (HTML) con el fin de actualizar el HTML en cuando los datos son modificados, consiguiendo así que las plantillas en tiempo real sean más rápidas y simples .

Es posible extender las funcionalidades de MeteorJS a través de un repositorio oficial con distintos paquetes y librerías que permiten agregar funcionalidades no existentes en la versión estándar. Dentro del repositorio oficial podemos encontrar por ejemplo librerías de JQuery, Twitter Bootstrap, Github entre otros.

Cómo crear un proyecto con MeteorJS?

Para crear un proyecto con MeteorJS es necesario instalar previamente NodeJS, una vez éste esta instalado podemos instalar MeteorJS. Aunque puede parecer complicado, con pocas líneas tendremos tanto NodeJS como MeteorJS instalados y por lo tanto podremos empezar a desarrollar un proyecto con MeteorJS.

> git clone git://github.com/ry/node.git
> cd node
> ./configure
> make
> sudo make install
> curl https://install.meteor.com | /bin/sh

Para crear un proyecto basta con ejecutar la siguiente línea:

> meteor create namemyapp

Este comando nos creará la carpeta "namemyapp" con la estructura básica de un proyecto vacío, es decir,  con los archivos: (namemyapp.js, namemyapp.css y namemyapp.html).

¡Una vez se han creado los archivos ya podemos empezar a programar!

 

¿Cuáles son los principales puntos de la programación con MeteorJS?

Es recomendable estructurar el proyecto en diferentes archivos HTML (donde cada archivo HTML cargará uno o más templates) y diferentes archivos JS (cada template suele tener un único JS aunque es posible compartirlos entre templates, dado que al final  Meteor agrega todos los JS en un único).

Un ejemplo sencillo es el de un template que quiere mostrar los mensajes de un chat para ello necesitaremos definir una colección de MongoDB para guardar estos mensajes.

Para hacer que cualquier template tenga disponibles distintas variables o colecciones debemos seguir la siguiente estructura:

Template.nombretemplate.nombrevariable = function() {
    return variable
}

Nuestro objetivo es que nuestro template tenga acceso a todos los mensajes guardados en la colección Messages. Una posibilidad sería la siguiente:

Ahora ya podemos pasar a desarrollar el Template que mostrará los mensajes.

Dentro del HTML del template todas las variables a las que tiene acceso un template podemos pintar siguiendo el siguiente formato:

 
{{nombrevariable}}

 

Aunque si la variable en cuestión es un conjunto de elementos, como es nuestro caso, debemos realizar un foreach que con Meteor se realiza así:

 
{{#each nombreconjunto}}

            {{nomnrevariable}}
            {{nombrevariable2}}
            {{nombrevariable3}}
            …
{{/each}}
 

El último paso es el de poder insertar mensajes, para conseguirlo tenemos que utilizar eventos, Meteor.

La siguiente estructura permite indicarle a un template qué eventos tiene asociados.

 
Template.nombretemplate.events({

         ‘tipusevent tag.class/id’ : function () {
               ….
         }
});

Donde tipo evento puede ser cualquiera de los eventos disponibles en JavaScript como por ejemplo click, blur o keypress.

¿Cómo iniciar el servidor Meteor y ver nuestra aplicación?

Para poder ver el resultado de nuestra aplicación debemos inicializar el servidor de Meteor y los servidores de MongoDB. Para ello accedemos a la carpeta de nuestro proyecto desde la consola y ejecutamos la siguiente línea:

> meteor

Con esta instrucción se inicializa el Meteor y MongoDB en el puerto 3000 del localhost.

Si accedemos desde un navegador podremos ver nuestra aplicación:

Conclusiones

Aunque MeteorJS es una tecnología válida para aplicaciones que funcionan en tiempo real, no todo son ventajas. En concreto queremos destacar el principal inconveniente con el que nos  hemos encontrado: la baja seguridad que ofrece. En el caso que estemos desarrollando una aplicación segura es conveniente poner la colecciones que contienen datos sensibles en el lado del servidor, hecho que implica perder para estos datos la principal funcionalidad de MeteorJS que es la actualización instantánea de los datos a la parte del cliente. No obstante eso, todavía podemos hacer que la parte servidora actualizar el cliente cuando hay una modificación. En este caso aparece un problema de latencia que no tiene una solución trivial.

A pesar de este inconveniente, debemos tener en cuenta que la última versión disponible de MeteorJS es la 0.7 y todavía está en fase de desarrollo. Por lo tanto creemos que MeteorJS tiene mucho potencial siempre y cuando consigan solucionar estos problemas.

Workshop realizado en l'inLab