MEAN (conjunto de software)
# MEAN (conjunto de software)

MEAN (MongoDB, Express.js, AngularJS (ou Angular), e Node.js) é um conjunto de soluções JavaScript de software livre e código aberto para a construção de páginas web dinâmicas e aplicações web.
Como todos os componentes do conjunto são em Javascript, as aplicações feitas com MEAN podem ser escritas usando a mesma linguagem tanto no back-end(lado do servidor) como no front-end(lado do cliente).
Embora seja frequentemente comparado com outros conjuntos de solução para desenvolvimento web, como o LAMP (Linux, Apache, MariaDB/MySQL e PHP), os componentes do MEAN são mais próximos da programação de alto nível, pois incluem uma ferramenta para camada de apresentação da aplicação, e não incluem uma camada de sistema operacional.
A sigla MEAN foi usada pela primeira vez por pelo desenvolvedor Valeri Karpov que em 2013 introduziu o termo em seu Blog. A logo, criada pelo designer gráfico Austin Anderson para o grupo original de desenvolvedores MEAN no LinkedIn, foi feita juntando as primeiras letras das logos de cada um dos componentes do conjunto MEAN.

## Componentes de software
### MongoDB

MongoDB é um banco de dados NoSQL orientado a documentos que usa documentos em formato JSON binário (BSON).
MongoDB é frequentemente escolhido como banco de dados nos projetos MEAN devido ao uso de documentos em formato semelhante ao JSON, o que permite que os outros componentes, também baseados em Javascript, interajam com os dados de forma muito mais natural do que em um modelo de banco de dados relacional (linhas e colunas).

### Express.js

Express.js (também chamdo apenas de Express) é um módulo de desenvolvimento web para Node.js.
Embora o Express seja capaz de agir como o servidor web completo, até mesmo com SSL/TLS, por questões de performance ele é mais frequentemente usado juntamente com um proxy reverso como NGINX ou Apache.

### Angular e alternativas

Geralmente, os dados são requisitados usando métodos Ajax e renderizadas no navegador por um framework de front-end. No entanto, as aplicações feitas com o conjunto MEAN costumam ser inteiramente baseadas em Javascript, é possível usar renderização no back-end, aonde os dados são requisitados, processados e organizados no lado do servidor, o que é mais rápido, prático e seguro.
O conjunto MEAN tradicional usa Angular.js como framework para desenvolvimento de interface gráfica, mas existem inúmeras variações possíveis. React (MERN) e Vue.js (MEVN) são as alternativas mais populares ao Angular.js no conjunto MEAN, embora seja possível usar outras opções, ou simplesmente não usar nenhuma (MEN).

### Node.js

Node.js é o ambiente de execução no qual o conjunto MEAN roda.
O uso do Node.js, que representa o paradigma de JavaScript Everywhere("Javascript em todo lugar"), é parte integral do conjunto MEAN.