Desarrollo de aplicaciones web con MEAN.io (Mongo, Express, Angular y NodeJS)

Hace unas semanas, elaborando un sistema interno para Oja.la tuve la libertad de escoger la plataforma a desarrollar y como este año me había decidido a realizar una aplicación web escrita 100% en Javascript empecé a investigar sobre como empezar con la plataforma  MEAN (Mongo, Express, Angular y NodeJS), para quienes no la conocen, es como LAMP (Linux, Apache, MySQL y PHP) pero orientada a usar JS tanto en frontend como en el backend. Investigando conseguí MEAN.io, un framework para desarrollar bajo esta plataforma.

Instalación

Al momento de iniciar el proyecto, no sabía utilizar Express ni Mongo, respecto a NodeJS sólo había hecho unos experimentos sencillos para ver como funcionaba, pero ya tenía experiencia en AngularJS y herramientas como: Yeoman, Grunt, Bower y NPM. Por ello, la instalación de este framework me pareció muy sencilla: clonar el repositorio y luego mediante bower instalar todas las dependencias automáticamente. Solo realicé algunos cambios para evitar actualizar versiones no estables de librerías (no me gusta actualizar  en pleno desarrollo para evitar incompatibilidades con funcionalidades ya escritas) y eliminar cosas innecesarias para el proyecto (como autenticación usando redes sociales).

Esqueleto inicial

La forma en como está estructurado me ha gustado mucho, la separación del backend y frontend se hace notable. Respecto a Express,  la estructura es muy sencilla, principalmente se divide en las carpetas: models (los objetos que permiten se comunican con la BD), controllers (donde se guarda la lógica del proceso), routes (maneja las rutas de las peticiones del servicio web), views (las vistas a mostrar desde el servidor, las cuales son diferentes de las vistas generadas en el frontend).

En la parte pública se trabaja como cualquier aplicación de Angular, se crean carpetas por cada módulo a desarrollar, por defecto vienen incluidas 2: auth y system. La primera es el módulo de autenticación que trae MEAN.io para permitir identificarse utilizando redes sociales y la segunda, donde va la aplicación como tal. También se incluyen los archivos para manejar las dependencias del proyecto usando npm, bower y se incluye un archivo de Grunt.

Este último, trae configuraciones para montar un servidor: de desarrollo, pruebas y producción. Cada uno de ellos tiene su propia  configuración, permitiéndote trabajar con diferentes bases de datos, bibliotecas comprimidas solo en la versión de producción y pruebas. Me pareció raro que no incluía la tarea grunt-ngmin, pues permite facilitar la compresión de archivos JS de AngularJS.

Logo de Mean.io, chévere que sea una chica ninja

Desarrollo

El desarrollo de la aplicación se me hizo fácil gracias a esta plantilla base, si nunca has desarrollado una aplicación bajo este modelo, te recomiendo iniciarte con MEAN.io. Lo único extraño es que generalmente en otras plataformas el código de backend es diferente al de frontend, permitiendo determinar fácilmente la ubicación del código que estas viendo, como aquí todo es JS a veces debes mirar la ruta para ver si estas en frontend o backend, además, probablemente llames a los modelos de Express y Angular con el mismo nombre, confundiendo a veces la apertura de archivos.

La desventajas que vi con esta plataforma fue: la poca documentación debido a su poco tiempo de disponibilidad e incompatibilidad para navegadores antiguos (Android 2.3, IE 8, entre otros), sé de la disminución de la cuota de mercado de estos navegadores, pero aún existen clientes/usuarios que lo utilizan y en el ambiente empresarial se les debe dar soporte. Y finalmente, no me gustó mucho trabajar con MongoDB, es muy chévere almacenar los objetos en JSON y la lectura se hace rápida, pero no sé si es por mi años utilizando BD relacionales pero la falta de restricciones de diseño o tanta libertad de almacenar lo que se desee allí, me parece que puede crear daños en la integridad de datos en el futuro. Tal vez porque estoy acostumbrado a manejar toda la validación de la data en la BD y no en la aplicación, me pareció inseguro que con MongoDB toda la validación se hace en la aplicación (si me equivoco, por favor me lo aclaran en los comentarios).

Recomendaciones

Te recomiendo utilizar Mean.io si deseas hacer una aplicación bajo esta plataforma en poco tiempo, realmente es sencilla de usar si tienes experiencia desarrollando aplicaciones web con Javascript. Probablemente la curva de aprendizaje para un novato sea fuerte pero vale la pena el esfuerzo. Si deseas algo mas sencillo o simple (sin sacrificar calidad), puedes probar Mean.JS un fork realizado por el autor de Mean.io para mejorar algunos problemas de diseño de la plataforma.

 

Hace 4 años en esa fecha: Vota por el futuro logo de Mozilla Venezuela

Hace 6 años en esa fecha: ¡Empezó el E3 2008!

Hace 8 años en esa fecha: Entrevista a Luis Tascon en VTV y mi opinión de él

Internet’s Own Boy: El documental sobre Aaron Swartz

Hace unos meses escribí sobre el aniversario de la muerte de Aaron Swartz, pero esta vez les escribo sobre Internet’s Own Boy un documental de su vida realizado por Brian Knappenberger (director de We are Legion donde se muestra la historia de grupo hacktivista Anonymous). Siempre consideré a Swartz uno de los genios de Internet y seguí su carrera, por eso, al enterarme de la existencia de este proyecto, estuve esperando con ansias su estreno que ocurrió esta semana.

Historia

El filme comienza desde que Aaron era un niño aprendiendo a leer, sus inicios en la informática y luego empieza a hacer un resumen sobre los distintos aportes que hizo durante su vida. Gran parte del documental se enfoca en explicar el objetivo de liberar los documentos que le ocasionaron problemas legales, cómo funciona el acceso a los  mismos en Estados Unidos, las consecuencias de ello y los cargos presentados por el MIT, cómo fue el juicio, entre otras cosas. Esta parte, la cual ocupa gran parte del documental, me ayudó a entender bien todo lo acontecido respecto a la problemática de liberar esos documentos y como le afectó emocionalmente, pues a pesar de haber leído el tema, escucharlo desde el punto de vista de expertos en el área (como su abogado) entiendes mejor las cosas. Luego, el documental muestra la etapa hacktivista de Swartz:  como logró organizar a la gente para protestar en contra de SOPA y la censura en la red.

Finalmente, viene un momento triste al escuchar de sus allegados los problemas que pudieron llevarlo al suicidio. Sin embargo, luego el ambiente se vuelve  alegre al ver los frutos de su trabajo, no les voy a contar el final pero me gustó ver como en tan poco tiempo se ve resultados favorables de liberar las publicaciones científicas.

Participantes

En el documental participan personas que lo conocieron y trabajaron con él, familiares, Tim Berners Lee el creador de la web, su abogado en el caso, parejas, amigos y otros. Escuchar a Tim expresarse sobre Aaron, realmente te ha pensar sobre su contribuciones, ademas que las palabras del abogado sobre el problema con el MIT, permite conocer muy bien los cargos presentados.

¿Cómo verlo?

Realmente deben ver este documental si:  son hackers, activistas de la libertad de la información, apoyan el conocimiento abierto y global, informáticos y usuarios avanzados de Internet. Aunque pueden donar al proyecto, pueden ver legalmente el documental completo a continuación, gracias a su liberación bajo licencia Creative Commons.

Luego de verlo, te darán ganas de hacer algo por Internet.

Nota: por sugerencia de Gery Escalier, les dejo los subtítulo en español para entender mejor el contenido del documental.