MEAN (Mongo-Express-Angular-Node) Desarrollo Full Stack JavaScript (Parte I)
En los últimos años se han puesto muy de moda tecnologías como MongoDB, Node.js y AngularJS, lo que ha hecho que haya surgido una nueva corriente para la construcción de aplicaciones web rápidas, robustas y mantenibles usando las tecnologías de MongoDB, Express, AngularJS y Node.js. El uso de estas 4 tecnologías juntas conforman el llamado "stack MEAN" (MEAN = Mongo-Express-Angular-Node) que tienen como nexo común la utilización del mismo lenguaje de programación (JavaScript), lo cual supone una gran ventaja para los que sepan Javascript, que por otro lado no es un lenguaje muy complejo. Por tanto con estas 4 tecnologías tenemos todo lo necesario para desarrollar aplicaciones web: Frontend, Backend y Base de Datos.
# MongoDB
MongoDB es un sistema de base de datos documental no relacional de código abierto, conocido también (aunque mal dicho en mi opinión) como base de datos NoSQL. Este sistema de base de datos, guarda los datos en documentos en formato JSON (en realidad los guarda en formato BSON), lo que hace que sea un formato muy manejable y entendible para trabajar con él, y las operaciones (o "consultas") sobre estos documentos se realizan en JavaScript. De MongoDB cabe destacar su flexibilidad y escalabilidad, lo que ayuda al desarrollo ágil de proyectos software. Son muchos los lenguajes que pueden trabajar con MongoDB (Java, PHP, Python, etc.) y por supuesto NodeJs es uno de ellos.
# Express
Express es un framework realizado en NodeJs muy ligero y flexible que proporciona un un conjunto muy robusto de facilidades para crear fácilmente servidores web y recibir peticiones HTTP; por tanto, permite desarrollar API REST de forma muy rápida.
# AngularJS
AngularJS es un framework para Frontend desarrollado por Google (vamos que va a tener éxito si o si) que sigue el patrón MVC (Model-Vista-Controlador), aunque la propia gente de Google dice que sigue el patrón MVW (Model-View-Whatever (whatever works for you)). AngularJS permite crear lo que se llama Single-Page-Applications, que son aplicaciones web que no necesitan recargar la página (vamos que con AngularJS "te regalan el AJAX" aunque esto que digo no es 100% correcto). Para terminar decir que AngulaJS es un framework muy potente y que facilita muchísimo la labor de los desarrolladores de Frontend. Darle caña a este framework ya que es de los que más me han sorprendido últimamente.
# NodeJS
NodeJS (creado en el año 2009) es un entrono de programación (en Javascript) en la capa del servidor basado en el motor V8 de JavaScript, orientado a eventos no bloqueantes, lo que lo hace muy rápido y permite crear programas de red altamente escalables (servidores web) y emplear el "tiempo real". En los últimos años esta tecnología esta teniendo mucho auge y ha hecho que exista una comunidad de desarroladores bastante amplia y potente, por lo que tiene pinta que esta tecnología tendrá cierto éxito a corto-medio plazo.
Dado el éxito que esta teniendo MEAN para el desarrollo de aplicaciones web, están surgiendo proyecto que proporcionan esqueletos de aplicación MEAN tales como MEAN.IO o MEANJS.ORG.
¿Como funciona MEAN?
Como ya se ha dicho, con el uso de estas 4 tecnologías tenemos todo lo necesario (Frontend, Backend y Base de Datos) para desarrollar una aplicación web, pero os preguntareis cual es la finalidad y la funcionalidad de cada una de estas tecnologías. En la siguiente imagen podeis ver cual es el flujo de las aplicaciones web realizadas con MEAN.
Como se observa en la imagen, el Frontend lo desarrollamos con AngularJS, que es el encargado de hacer llamadas al API REST (Post, Put, Get y Delete) desarrollado en NodeJS que utiliza el framework de Express. El API podrá hacer un CRUD (Create-Read-Update-Delete) a la base de datos MongoDB y cuando el API tenga los datos que se le han pedido en la llamada los devolverá a AngularJS (es decir al Frontend) en formato JSON y este los mostrará en pantalla sin necesidad de recargar la página ya que AngularJS mantiene el modelo de datos actualizado sin necesidad de recargar la página.
Como vemos esta es la arquitectura y el flujo de datos que hay en las aplicaciones desarrolladas con estas tecnologías. Dependiendo del proyecto podremos meter más lógica en la parte de Frontend o en la de Backend, pero eso ya son cosas que hay que valorar según las características de los proyecto. Por último comentar una cosa que me ha sorprendido gratamente de AngularJS y es que desde el propio HTML nos permite validar formularios con las etiquetas que nos proporciona, por tanto no será necesario validar los formularios en Javacript como antaño.
Variables o li para ello vamos a hacer un ejemplito de estos tres mismos.Fijaros en ese mismo ejemplo que devuelve un array
Qué ilustrativo me resultó éste artículo pues soy Reclutadora y a veces los requeriemientos para las posiciones de IT son demasiado técnicos ¡Gracias!
Grande el aporte, más tenía una duda espero me puedas ayudar, si sails.js escala a express.js en el tema del ORM estaría bien usar sails.js o vez que no es un escalamiento considerable para dejarlo y seguir usando express.js pero no ambos. Y ahora con el frok de io.js sobre node traera mejoras express.js como vez de anetmano el agradecimiento respectivo.
Antes que nada quiero decir que muy bueno el aporte, pero me gustaria aprender esta tecnologia tu sabes de pronto donde puedo encontrar algun curso en español asi sea pagado.
gracias y espero tu respuesta pronto.
Hola Fernando. La verdad que cuando me pongo a mirar estas cosas suele haber mucho mas material en ingles que en español, así que suelo aprender de lo que hay en un idioma o en otro. Si buscas por internet encontraras cosas de MEAN, pero piensa que son tecnologías independientes y que por separado son relativamente complejas, por tanto intenta aprender por separado AngulaJs, NodeJs+Express y MongoDB.
En resumen no puedo recomendarte nada concreto en español porque no lo he encontrado.
SL2