# MEAN stack

La pila MEAN es un marco basado en JavaScript para desarrollar aplicaciones web. MEAN lleva el nombre de **MongoDB** , **Express** , **Angular** y **Node** , las cuatro tecnologías clave que componen las capas de la pila:

<figure><img src="https://539580950-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiKvwltOme7zTxep3LVyW%2Fuploads%2FVbCb7pEPtjHeiDEwTtnJ%2Fimage.png?alt=media&#x26;token=6a9fbc53-947c-4c35-a012-4a08ce028f49" alt=""><figcaption><p>Significado</p></figcaption></figure>

* **MongoDB** : base de datos documental NoSQL. Los documentos JSON creados en su interfaz Angular.js se pueden enviar al servidor Express.js, donde se pueden procesar y (suponiendo que sean válidos) almacenar directamente en MongoDB para su posterior recuperación. MongoDB guarda información en un formato parecido a JSON (BSON, extensión binaria de JSON), el lenguaje de queries de MongoDB (MQL) sí está definido en JSON, y el CLI es un interpretador de JavaScript.Escucha en el puerto 27017 por defecto.
* **Express(.js):** web framework que se ejecuta en un servidor Node.js. Se trata de un “*marco web minimalista, rápido y sin opiniones para Node.js*”. Tiene modelos potentes para el enrutamiento de URL (haciendo coincidir una URL entrante con una función de servidor) y el manejo de solicitudes y respuestas HTTP. Al realizar solicitudes XML HTTP (XHR), GET o POST desde Angular.js, se puede conectar a las funciones de Express.js de la aplicación. Esas funciones, a su vez, utilizan los controladores Node.js de MongoDB para acceder y actualizar datos en su base de datos MongoDB.&#x20;
* **Angular(.js)**: un framework de JavaScript del lado del cliente. Este permite ampliar etiquetas HTML con metadatos para crear experiencias web dinámicas e interactivas de manera mucho más potente que, por ejemplo, crearlas uno mismo con HTML estático y JavaScript (o jQuery). Permite comodidades como la validación de formularios o la localización y la comunicación con el servicio de back-end (*Express* en este caso).

{% hint style="info" %}
Hay variaciones de la pila MEAN como [MERN](https://www.mongodb.com/mern-stack) (reemplazando Angular.js con React.js) y MEVN (usando Vue.js).&#x20;
{% endhint %}

La arquitectura MEAN está diseñada para hacer que la creación de aplicaciones web en [JavaScript](https://www.mongodb.com/languages/javascript) y el manejo de JSON sean bastante fáciles.

<figure><img src="https://539580950-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FiKvwltOme7zTxep3LVyW%2Fuploads%2FnbZzuwrrTzg7LoXj3CeN%2Fimage.png?alt=media&#x26;token=9135b0c2-5add-4bf3-b118-d950d23ff04e" alt=""><figcaption><p>Arquitectura MEAN</p></figcaption></figure>
