La stack MEAN regroupe quatre technologies open-source basées sur JavaScript, permettant de concevoir des applications web complètes, de la base de données à l’interface utilisateur :

ComposantRôle principalFonctionLangage
MongoDBBase de donnéesStockage flexible de données JSON (NoSQL)JSON/JavaScript
Express.jsServeur/APIGestion des routes, requêtes HTTP, APIs RESTJavaScript
AngularFront-endInterface dynamique, SPA, composants réactifsTypeScript (superset de JavaScript)
Node.jsBack-endExécution serveur, communication entre client et BDDJavaScript

Fonctionnement global

  • MongoDB stocke les données sous forme de documents JSON, offrant une grande souplesse et scalabilité.
  • Express.js gère la logique serveur et les APIs REST, servant d’intermédiaire entre le client et la base.
  • Angular permet de construire des interfaces graphiques dynamiques grâce à sa structure en composants et son data-binding bidirectionnel.
  • Node.js exécute le code JavaScript côté serveur, assurant la rapidité et la capacité à gérer de multiples requêtes simultanées.

Avantages du MEAN

  • Full JavaScript Stack : Un seul langage (JavaScript) pour toute la chaîne (front-end et back-end).
  • Scalabilité élevée : Facile à mettre à l’échelle grâce à Node.js et au sharding MongoDB.
  • Prototypage rapide : Idéal pour créer rapidement des MVP ou des applications en temps réel (tchats, tableaux de bord, collaboratif).
  • Communauté et écosystème riche : De nombreux outils, bibliothèques et documentation disponibles, facilitant l’apprentissage et l’intégration de fonctionnalités.

Use cases courants

  • Applications SPA (Single-Page Application)
  • Plateformes collaboratives et en temps réel (chat, dashboard interactif)
  • Prototypes et MVP pour startups

Comment démarrer avec la stack MEAN

Prérequis

  • Avoir Node.js installé sur ton système.
  • Installer MongoDB (local ou Atlas pour le cloud).
  • Installer Angular CLI :
npm install -g @angular/cli

Initialisation du projet

Backend – Node.js & Express

Crée un dossier pour ton projet et initialise-le : bash

mkdir projet-mean
cd projet-mean
npm init -y

Installe Express.js et MongoDB driver : bash

npm install express mongoose

Crée un fichier server.js

const express = require('express');
const mongoose = require('mongoose');
const app = express();
app.use(express.json());

mongoose.connect('mongodb://localhost:27017/mean-tuto', { useNewUrlParser: true, useUnifiedTopology: true });

const Item = mongoose.model('Item', { name: String });

app.get('/api/items', async (req, res) => {
  const items = await Item.find();
  res.json(items);
});

app.post('/api/items', async (req, res) => {
  const item = new Item({ name: req.body.name });
  await item.save();
  res.json(item);
});

app.listen(3000, () => console.log('Serveur lancé sur le port 3000'));

Lance le serveur

node server.js

Frontend – Angular

Génère ton application Angular dans un autre dossier

ng new frontend-mean
cd frontend-mean
ng serve --open

Pour communiquer avec l’API, utilise Angular HttpClient dans un service

// src/app/services/item.service.ts
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

@Injectable({ providedIn: 'root' })
export class ItemService {
  constructor(private http: HttpClient) {}
  getItems() { return this.http.get('/api/items'); }
  addItem(name: string) { return this.http.post('/api/items', { name }); }
}

Pense à configurer le proxy pour Angular (fichier proxy.conf.json)

{
  "/api": {
    "target": "http://localhost:3000",
    "secure": false
  }
}

Démarre Angular avec le proxy

ng serve --proxy-config proxy.conf.json