La stack MEAN : pourquoi et comment l’utiliser ?

-

Trouvez votre prochaine mission freelance !

Rejoignez FreelanceRepublik, et recevez des offres de missions tech à la mesure de votre talent : +100 nouvelles missions par semaine !

La stack MEAN, vous en avez déjà entendu parler ? Non ? C’est un regroupement de technos JavaScript permettant de créer des projets full stack.

Ce n’est donc ni un framework, ni une techno à proprement parler ; juste un assemblage d’outils utilisables ensemble – plutôt un pattern, donc – pour développer entièrement un projet.

En savoir plus sur cette stack technique vous intéresse ? Voyons-la en détails !

Dans le principe

MEAN est donc une stack technique. Mais déjà, qu’est-ce qu’une stack technique ?

Une stack (littéralement « pile », en français) est l’ensemble des technologies utilisées sur un projet de développement. Elles incluent donc, par exemple dans le cas d’un projet web, les technos front-end et back-end.

Au vu du nombre de technologies qu’il existe aujourd’hui, il y a des milliers de combinaisons (de stacks) différentes.

Et MEAN n’est que l’une d’entre elle, mais qui a su faire des adeptes au point que des solutions pour créer des projets basés sur MEAN ont vu le jour.

La stack MEAN en détails

Il est temps de rentrer dans l’aspect technique de la stack MEAN. Déjà, MEAN est l’acronyme des 4 technos qui la composent :

  • MongoDB ;
  • Express.js ;
  • Angular ;
  • Node.js.

Ces technos vous sont sûrement familières, mais passons-les en revue pour les décrire et voir comment elles interagissent les unes avec les autres.

MongoDB

Logo de la techno MongoDB, techno de base de données NoSQL utilisée dans la stack MEAN

MongoDB est sans doute la base de données NoSQL la plus connue.

Née en 2009, cette techno est une des premières à introduire le concept de base non relationnelle (à l’opposé des bases dites SQL, donc). C’est à dire que Mongo structure les données sous forme de documents, et non de tables ayant des relations entre elles.

Voici un exemple de document stocké par Mongo :

Example d'objet stocké dans une base de données MongoDB

Toute la stack technique étant basée sur du JavaScript, ce SGDB est parfaitement adapté, puisque, comme on le voit, les documents sont stockés au format JSON (JavaScript Object Notation). Cela facilite leurs échanges et interprétations, à la fois par le back end mais aussi par le front end.

Express

Logo d'Express, framework basé sur Node.js utilisé pour créer le serveur web de la stack

Au niveau du back end, la stack MEAN embarque donc donc Express. Express est un framework basé sur sur Node.js, qu’utilisent aujourd’hui de grands groupes comme Netflix ou PayPal.

Datant de 2010, cet outil a la particularité de participer à un développement rapide d’un back end, de manière minimaliste, et surtout, en utilisant JavaScript.

Minimaliste, car en quelques lignes on peut créer un serveur web, par exemple :

Exemple d'utilisation du framework express dans le cadre de la stack MEAN

Ce qui nous intéresse ici, c’est le fait qu’il utilise du JavaScript, contrairement à l’immense majorité des frameworks backend (dont beaucoup utilisent du PHP, comme Symfony ou Laravel). Ce qui suit la logique du « tout JavaScript » de la stack technique.

En tant que techno back end, Express fera donc la liaison entre MongoDB et le front, Angular.

Angular

Logo du framework Angular, techno front end de la stack MEAN

La techno front-end de la stack MEAN est donc Angular. Angular, dont la première version date de 2016 (la stack MEAN s’étant donc basée sur son parent, AngularJS, pour ses premières versions), est un framework front end de chez Google.

Basé sur le modèle MVC, c’est un des trois principaux frameworks JavaScript, avec React et Vue.js.

D’ailleurs, Angular est probablement la techno la plus interchangeable de la stack. Un framework JavaScript permettant de faire (plus ou moins) la même chose que les autres, on peut très bien utiliser React ou Vue à la place. On parlera alors de MERN, ou MEVN.

Si MEAN se base sur Angular et non un de ses deux cousins, c’est probablement parce que la stack MEAN date de 2013, époque à laquelle ce framework avait toujours l’avantage sur ses concurrents. Ce qui n’est plus forcément le cas aujourd’hui.

Node.js

Logo de la technologie node.js

Node.js, dernier composant de la stack, en est en réalité sa base.

Pour faire simple, cette techno, sortie en 2009, est un environnement bas niveau permettant l’exécution de JavaScript côté serveur. Ce qui permet donc la création de serveur web sans se baser sur, par exemple, Nginx ou Apache.

De multiples frameworks ont été créés en se basant sur Node, dont Express, qui fait lui aussi partie de la stack.

Node est donc non seulement l’environnement d’exécution sur lequel repose Express, mais aussi toute la stack. C’est l’élément le plus essentiel et irremplaçable de la pile technique.

Outils complémentaires

Évidemment, les 4 technos de la stack sont les piliers de MEAN, mais ils peuvent être (et sont) utilisés avec d’autres librairies, en complément.

Par exemple, on utile régulièrement Mongoose avec Mongo. Sans parler de tous les middlewares généralement utilisés sur un projet express (bcrypt, body-parser, dotenv, jsonwebtoken, etc.).

Côté front, il existe tout un tas de frameworks CSS pour faciliter le développement des interfaces.

Les avantages et inconvénients de la stack MEAN

La stack mean est donc un ensemble de technologies conseillées pour un projet full stack. Cependant, pour bien faire le choix de l’utilisation ou non de cette stack, il convient d’en étudier les avantages et inconvénients.

Avantages

La stack MEAN présente indéniablement des avantages. On compte parmi eux :

  • L’utilisation de JavaScript comme unique langage ; ce qui simplifie le développement, notamment s’il est fait par un seul développeur ;
  • Toutes les technos de la stack sont connues et reconnues, ont une grosse communauté, ce qui signifie de la maintenabilité dans le temps et de l’aide facile à trouver ;
  • On peut facilement créer des projets MEAN, comme on le verra par la suite.

Désavantages

Une stack technique étant aussi un choix personnel (attrait pour le langage ou les technologies), les désavantages sont les mêmes pour chaque stack.

Notamment la possibilité de faire un mauvais choix dès le départ (techno sur le déclin), ou d’accumuler trop de technos, librairies, et de créer rapidement de la dette technique.

Créer un projet avec la stack MEAN

Un projet basé sur la stack MEAN peut se faire de manière totalement manuelle, en créant un projet from scratch intégrant chacune des technos.

Cependant, il existe aujourd’hui des outils permettant de générer un projet incluant déjà tous les éléments de la stack. Cela a pour avantage un certain gain de temps, mais aussi un paramétrage plus fin (versions, modules intégrés, etc.) et aussi d’avoir la certitude de la compatibilité des éléments.

Il existe deux principaux outils pour générer des projets sous MEAN : mean.io et mean.js.

Pour l’anecdote, le premier a été créé par celui qui est à l’origine de la stack MEAN (du moins, de l’acronyme et de ce qui en découle), Amos Haviv, avec l’entreprise dans laquelle il travaillait, Linnovate.

Il a ensuite quitté cette entreprise, pour créer indépendamment le deuxième outil de génération de projet MEAN ; mean.js.

mean.io

mean.io, appartenant donc à la société Israélienne Linnovate, est le plus suivi et maintenu des deux outils. Il compte plus de 12k stars sur GitHub et est très régulièrement mis à jour.

Pour créer un projet avec la stack MEAN grâce à mean.io, rien de plus simple, cela se fait en quelques lignes dans un terminal :

git clone <https://github.com/linnovate/mean>
cd mean
cp .env.example .env
yarn
yarn start (for development)

Il ne s’agit rien de plus que de cloner un repo. Cependant, ce repo, en plus d’inclure les quatre technos, vient avec un ensemble de modules qu’on retrouve très souvent dans les projet de ce type, par exemple :

  • jsonwebtoken, pour l’authentification ;
  • helmet, pour la sécurité du serveur Express ;
  • dotenv, pour gérer les variables globales du projet ;
  • bcrypt, pour le chiffrage de mot de passe.

L’avantage est donc ici de ne pas à avoir à les installer à la main ; c’est un gain de temps certain tout en évitant des potentiels conflits de version.

mean.js

Le deuxième projet de ce type, mean.js, est lui beaucoup moins mis à jour (dernier commit datant d’octobre 2019), mais aussi moins suivi (« seulement » 4900 stars sur GitHub).

On retrouve ici le même principe : le clonage du repo. Concrètement, la documentation (plus exhaustive que pour mean.io), nous donne les commandes suivantes :

git clone <https://github.com/meanjs/mean.git> meanjs
cd meanjs
npm install
npm start

Ce qui revient à peu près au même.

Là aussi, on retrouve des modules pré-installés :

  • nodemailer, pour envoyer des emails via un serveur node ;
  • multer, middleware utilisé pour l’upload de fichiers ;
  • validator, pour la validation de chaînes de caractères.

On aura, comme mean.io, un certain gain de temps à générer un projet directement via mean.js


On notera que si les deux repos ont certains modules en commun (helmet, mongoose), ils n’incluent pas forcément les mêmes. Ainsi, mean.io vient avec bcrypt et dotenv, ce que n’a pas mean.js. Et inversement, on retrouve chez mean.js nodemailer et multer, qu’on n’aura pas avec mean.io.

Le choix de l’outil est donc une question de goûts. mean.io étant cependant plus maintenu, on peut penser que les librairies et middlewares inclus le sont avec des versions plus récentes, limitant ainsi la dette technique.

Quant aux autres modules, on peut très facilement les installer à la main.

Sachez qu’il existe également des outils de ce genre pour les stacks basées sur les autres frameworks front, comme MEVN et MERN.

Conclusion

Comme on l’a vu, MEAN est une stack technique permettant de cadrer le développement de projets, en définissant des technos et les modules à installer. En clair, MEAN nous donne les bonnes bases pour la construction d’un projet web.

Évidemment, la stack n’est pas dénuée de désavantages et son manque de flexibilité peut déplaire à certains. Cependant, on peut très bien utiliser d’autres frameworks front à la place d’Angular, et les modules qui viennent avec sont également remplaçables.

Alexandre Griseyhttps://nomadlife.fr/
Content Writer et Digital Nomad, j'écris des articles et du contenu autour des thématiques de la tech, du voyage et du monde du freelance.

Partager cet article

Missions FreelanceRepublik

Les derniers articles

Missions Freelance !

Comme plus de 25 000 freelances, recevez des offres de mission tech à la mesure de votre talent sur FreelanceRepublik.

Newsletter

Le podcast

Le podcast la voix du freelance donne la parole aux freelances.

Freelances, gagnez du temps !

Ne perdez plus de temps à prospecter en vain. Inscrivez-vous gratuitement sur FreelanceRepublik, et recevez de belles offres de missions tech. FreelanceRepublik est gratuit pour les freelances.

Vous devriez lire également ces articles

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici