Desarrollo Full Stack JavaScript. El conocido como Stack MEAN
¿Ves alguna errata o quieres modificar algo? Haz una Pull Request
Con el auge de AngularJS, una nueva corriente está surgiendo en el desarrollo en JavaScript de principio a fin. El llamado stack MEAN. Con desarrollo end-to-end nos referimos a utilizar JS en todas las partes que componen una aplicación web actual: Frontend, Backend y Base de Datos.
El acrónimo MEAN viene de (M)ongo + (E)xpress + (A)ngular + (N)ode
MongoDB
Mongo es una base de datos no relacional (NoSQL) de código abierto que guarda los datos en documentos tipo JSON (JavaScript Object Notation) pero en forma binaria (BSON) para hacer la integración de una manera más rápida. Se pueden ejecutar operaciones en JavaScript en su consola en lugar de consultas SQL. Además tiene una gran integración con Node.js con los driver propio y con Mongoose. Debido a su flexibilidad es muy escalable y ayuda al desarrollo ágil de proyectos web.
ExpressJS
Express es un framework por encima de Node.js que permite crear servidores web y recibir peticiones HTTP de una manera sencilla, lo que permite también crear APIs REST de forma rápida.
AngularJS
Angular es un framework JS para la parte cliente o Frontend de una aplicación web, que respeta el paradigma MVC y permite crear Single-Page Applications (Aplicaciones web que no necesitan recargar la página), de manera más o menos sencilla. Es un proyecto mantenido por Google y que actualmente está muy en auge.
Node.js
Node Es un entorno de programación en JavaScript para el Backend basado en el motor V8 de JavaScript del navegador Google Chrome y orientado a eventos, no bloqueante, lo que lo hace muy rápido a la hora de crear servidores web y emplear tiempo real. Fue creado en 2009 y aunque aún es joven, las últimas versiones lo hacen más robusto además de la gran comunidad de desarrolladores que posee. No solo se utiliza en servidor, se ha extendido tanto que se emplea en Stylus, un preproccesador CSS, en Grunt un gestor de tareas basado en JavaScript y en varias cosas más como tests, etc…
Una de las principales ventajas de MEAN es que emplea el mismo lenguaje de programación en todas las partes de la aplicación lo que permite que una persona pueda manejarse en todos los ámbitos de una aplicación web moderna aunque se especialice en uno de ellos. De esta manera se colabora más en los proyectos y el desarrollo es más continuo.
Esto, añadido a las pruebas automatizadas y los test unitarios, los repositorios git como GitHub o Bitbucket, los servidores de integración continua y las PaaS como Heroku o Nodejitsu hacen que el desarrollo web moderno sea más divertido y ágil.
Existen varios proyectos de esqueletos de aplicación con el stack MEAN, uno de los más conocidos es MEAN.io . Por mi parte estoy desarrollando mi propio MEAN Boilerplate (con casinos y furcias) con estas propiedades añadiendole Redis para el almacenaje de sesiones y Stylus como preprocessador CSS. También uso PassportJS para el login y registro con Facebook y Twitter. El proyecto está en GitHub y os animo a colaborar o a que lo uséis en vuestros proyectos.
Llevo una semana en desarrollo con ello y poco a poco lo voy a ir ampliando y mejorando. Iré contando en el blog las cosas que vaya aprendiendo. Podéis contactar conmigo en Twitter y en Google+
Fuente: http://addyosmani.com/blog/full-stack-javascript-with-mean-and-yeoman/
[¿Quieres más? Descarga el ebook en español sobre desarrollo web ágil con AngularJS y GulpJS.