MEAN

De Wikipedia, la enciclopedia libre
Ir a la navegación Ir a la búsqueda

MEAN Stack (acrónimo para: MongoDB, ExpressJS, AngularJS, NodeJS), es un framework o conjunto de subsistemas de software para el desarrollo de aplicaciones, y páginas web dinámicas, que están basadas, cada una de estas en el popular lenguaje de programación conocido como JavaScript. Gracias a esta característica el conjunto se integra exitosamente en una plataforma auto-suficiente.[1]

Componentes[editar]

Cada subsistema del Mean stack es de código abierto y de uso gratuito. Los componentes del "MEAN" son los siguientes::[2]

MongoDB: es un sistema de base de datos NoSQL, que almacena los datos en estructuras o “documentos”, los cuales están definidos con la notación JSON (Notación simple de objeto tipo JavaScript), lo que permite una rápida manipulación y transferencia de los datos. La mayor característica de esta plataforma es su escalabilidad, lo que significa que puede aumentar en forma considerable la cantidad de datos que almacena sin que esto afecte su funcionamiento en general.

Un ejemplo de un "documento" en JSON es:[3]

{
 id: "cd132450cafdef",
 nombre: "foo",
 alias: "bar",
 Direccion:
  {
   street: "123 Fake Street",
   city: "Faketon",
   state: "MA",
   zip: "12345"
  }
}

ExpressJS: es un módulo de NodeJS y como tal funciona sobre esta plataforma; este módulo ofrece los métodos suficientes en JavaScript, para poder manejar las solicitudes o peticiones que se hacen por medio de los métodos del protocolo HTTP (GET, POST, etc.). También ofrece un sistema simple de enrutamiento, que dentro del mean stack es aprovechado en el back-end o en el lado del servidor:

app.METHOD(PATH, HANDLER)

Donde:

  • app es una instancia de express.
  • METHOD es un método de solicitud HTTP.
  • PATH es una vía de acceso en el servidor.
  • HANDLER es la función que se ejecuta cuando se correlaciona la ruta.[4]
app.get('/', function (req, res) {  res.send('Hello World!'); })

AngularJS: es un framework que facilita la manipulación del DOM ('Modelo de Objetos del Documento' o 'Modelo en Objetos para la Representación de Documentos), y por lo tanto en el mean stack es la plataforma que se usa para trabajar en el front end. Este framework permite crear una gran variedad de efectos, de una forma sencilla, reduciendo contundentemente la cantidad de código, lo que permite que sea mucho más sencillo de mantener. Un ejemplo de angular básico es:

<!DOCTYPE html>
<html ng-app>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.2/angular.min.js"></script>
</head>
<body>
    <div>
       <label>Name:</label>
       <input type="text" ng-model="yourName" placeholder="Enter a name here">
       <hr>
       <h1>Hello {{yourName}}!</h1>
    </div>
</body>
</html>

En este ejemplo[5]​ el "input" queda enlazado a la etiqueta H1 y todo lo que pasa en el primero sucede en el segundo.

Angular también tiene la capacidad de hacer el enrutamiento del sistema y claro está también incorpora la función de ajax (asincronico javascript y xml), para hacer peticiones al servidor sin tener que cargar toda la pagina.

Por último en el acrónimo esta Nodejs, pero de hecho es la base de todo el conjunto.

NodeJS: Es la plataforma encargada del funcionamiento del servidor. Funciona totalmente con JavaScript, un lenguaje de programación que en un principio era dedicado a correr en el lado del cliente, pero su uso se ha ampliado considerablemente en todos los aspectos de una sitio web.

  • MongoDB, una base de datos NoSQL;
  • Express.js, soporte para aplicaciones web;
  • Angular JS, soporte para vistas, que implementa el patrón MVC en JavaScript del lado del cliente;
  • Node.js, una plataforma de software escalable del lado del servidor para aplicaciones de redes.

Historia[editar]

Desarrollado por el programador web israelí Amos Haviv en colaboración con la compañía israelí Linnovate, el concepto surgió según el mismo Amos Haviv, al notar el surgimiento de una tendencia en sus clientes a integrar lo subsistemas fundamentados en JavaScript, MongoDb , Nodejs y ExpressJS en el back-end y Angular para manejar el front-end. Según Amos Haviv, en una exploración por internet para saber si alguien más había propuesto la integración de estas plataformas se topó con el Acrónimo “MEAN”, en un blog escrito por Valeri Karpov.[6]

Tiempo después es contactado por Linnovate para trabajar en un nuevo proyecto, el cual consistía, según Amos Haviv en una “variación desorganizada de[7]​ ” que Linnovate habían heredado de otra compañía. Amos Haviv le presento a Linnovate su propia versión y pronto en colaboración entre estas partes, se desarrolló lo que hoy en día se conoce como “Mean.io”, y se puede encontrar en la página Mean.io.

Eventualmente, Amos Haviv terminó por abandonar su colaboración con Linnovate al parecer por diferencias entre las intenciones e ideas que tenía cada parte con respecto al proyecto. Pero, como Amos Haviv está muy comprometido con la idea de "MEAN", decidió crear Mean.js como alternativa a Mean.io, pero con unas marcadas diferencias: mientras que Mean.io es desarrollado y mantenido por linnovate y sus empleados en forma exclusiva, Mean.js es mantenido y desarrollado por una comunidad de expertos y aficionados en el tema por medio de internet; También mientras que Mean.io tiene su propio sistema generador y administrador de aplicaciones denominado mean command, Mean.js utiliza Yeoman generator. Pero la decisión sobre cual de los dos es mejor depende del gusto de cada persona, en especial cuando cada uno ha alcanzado una madurez relativa y cierta estabilidad.

Herramientas Complementarias[editar]

  • Mongoose - El controlador para mongodb-node.js encargado de proveer un elegante modelamiento de objetos para Node.js
  • Passport - Un middleware de autenticación para Node.js que permite autenticación usando usuario y contraseña con Facebook, Twitter, etc.
  • Twitter Bootstrap - El más popular framework que integra HTML, CSS, y JS para el desarrollo de proyectos adaptables a diferentes medios de reproducción (Responsive).
  • UI Bootstrap - Componentes Bootstrap escritos solamente en AngularJS[8]

Véase también[editar]

Referencias[editar]

  1. «Mean.io: The Friendly & Fun Javascript Fullstack for your next web application». 
  2. «The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js». 
  3. «Model One-to-One Relationships with Embedded Documents — MongoDB Manual 3.2». docs.mongodb.org. Consultado el 21 de marzo de 2016. 
  4. «Direccionamiento básico de Express». expressjs.com. Consultado el 21 de marzo de 2016. 
  5. «AngularJS — Superheroic JavaScript MVW Framework». angularjs.org. Consultado el 8 de agosto de 2016. 
  6. Valeri Kar Blogpost
  7. «Forking out of an open-source conflict». blog.meanjs.org. Consultado el 19 de marzo de 2016. 
  8. «MEAN.IO». learn.mean.io. Consultado el 21 de marzo de 2016. 

Enlaces externos[editar]