MEAN (solution stack)


MEAN is a free and open-source JavaScript software stack for building dynamic web sites and web applications.
Because all components of the MEAN stack support programs that are written in JavaScript, MEAN applications can be written in one language for both server-side and client-side execution environments.
Though often compared directly to other popular web development stacks such as the LAMP stack, the components of the MEAN stack are higher-level including a web application presentation layer and not including an operating system layer.
The acronym MEAN was coined by Valeri Karpov. He introduced the term in a 2013 blog post and the logo concept, initially created by Austin Anderson for the original MEAN stack LinkedIn group, is an assembly of the first letter of each component of the MEAN acronym.

Software components

MongoDB

MongoDB is a NoSQL database program that uses JSON-like BSON documents with schema.
The role of the database in the MEAN stack is very commonly filled by MongoDB because its use of JSON-like documents for interacting with data as opposed to the row/column model allows it to integrate well with the other components of the stack.

Express.js

Express.js is a modular web application framework package for Node.js.
Whilst Express is capable of acting as an internet-facing web server, even supporting SSL/TLS out of the box, it is often used in conjunction with a reverse proxy such as NGINX or Apache for performance reasons.

Angular and alternatives

Typically data is fetched using Ajax techniques and rendered in the browser on the client-side by a client-side application framework, however as the stack is commonly entirely JavaScript-based, in some implementations of the stack, server-side rendering where the rendering of the initial page can be offloaded to a server is used so that the initial data can be prefetched before it is loaded in the user's browser.
Angular, React and Vue.js are the most popular amongst other web application frameworks used in the stack and a number of variations on the traditional MEAN stack are available by replacing the web application framework with similar frameworks, or even by removing this component of the stack altogether.

Node.js

Node.js is the application runtime that the MEAN stack runs on.
The use of Node.js which is said to represent a "JavaScript Everywhere" paradigm is integral to the MEAN stack which relies on that concept.