Qu'est-ce qu'un projet MERN et comment créer une application CRUD avec? Partie 1/2
Tags: mongodb, express, react, node
Published: 2024-05-04 15:13:30

##**1. Introduction**##

MERN fait référence aux premières lettres de chacune des technologies suivantes: **MongoDB**, **Express.js**, **React.js** et **Node.js**. Cet ensemble des technologies est devenue une solution de choix pour le développement d'applications web modernes. Grâce à cette combinaison de technologies JavaScript, les développeurs peuvent créer des applications complètes, du backend au frontend, tout en bénéficiant des avantages du full-stack.

CRUD signifie **"Create"**, **"Read"**, **"Update"**, **"Delete"** qui signifie **produire**, **lire**, **mettre à jour** et **supprimer**. En programmation, ce sont les quatre fonctions de base du stockage persistant. 

En outre, chaque lettre du signifiant consultera toutes les fonctions mortes dans les applications de bases de données électroniques et mappées à une technique de protocole de transfert hypertexte régulière (HTTP par exemple), une instruction SQL ou une opération DDS.

Dans cet article, nous allons d'abord définir ce qu'est un projet MERN Stack et explorer les raisons pour lesquelles cette ensemble technologique suscite tant d'intérêt dans la communauté du développement web.

Ensuite, nous nous concentrerons sur la création d'une application CRUD basique qui permet aux utilisateurs de créer, lire, modifier et supprimer les données dans la base de données en utilisant les technologies MERN. Ces quattre opérations seront implémentées grâces aux requetes HTTP `get`, `put`, `post` et `delete`. Nous parcourrons étape par étape les différentes phases de développement, depuis la configuration de l'environnement de travail jusqu'au déploiement final de l'application.

Que vous soyez un développeur débutant ou chevronné, ce tutoriel vous fournira les connaissances et les outils nécessaires pour maîtriser la conception d'applications web modernes et évolutives à l'aide de l'ensemble MERN. 

C'est parti pour découvrir comment tirer le meilleur parti de cette stack JavaScript incontournable.


##**2. Projet MERN Stack**##

Une solide analyse technique est vraiment recommandée et nécessaire lorsque vous envisagez d’investir votre argent pour créer une application Web.

Comme précédemment dit, MERN Stack est une combinaison de technologies utilisées pour créer des applications Web premium qui a fait ses preuves sur le marché.

##**Pourquoi choisir l'ensemble MERN pour votre prochain projet ?**

Faisabilité des quatre meilleures technologies

a. **MongoDB**: 

MongoDB est une base de données open source orientée documents, ce qui signifie qu'elle stocke les données sous forme de documents au format JSON, plutôt que dans des tables avec des lignes et des colonnes comme dans les bases de données relationnelles traditionnelles. Cette conception flexible permet à MongoDB d'être facilement adaptable aux changements des besoins de l'application.

MongoDB offre des capacités de requêtage et d'analyse puissantes, sans nécessiter de définir un schéma rigide à l'avance. Cela facilite l'évolution de la structure des données au fur et à mesure que l'application se développe.

De manière générale, les bases de données NoSQL comme MongoDB sont souvent plus évolutives et performantes que les bases de données relationnelles, notamment pour la gestion de gros volumes de données à grande vitesse. Cela en fait un choix intéressant pour de nombreuses applications modernes, en particulier celles qui doivent traiter de grandes quantités de données non structurées.


b. **Express.JS**:


Express.js est un framework web rapide, minimaliste et sans opinion forte pour Node.js. C'est l'un des meilleurs frameworks JavaScript pour le développement back-end.

La principale utilisation d'Express.js est de créer des API REST qui reçoivent les demandes du front-end et renvoient les réponses appropriées. L'intégration native avec Node.js est l'une des principales raisons pour lesquelles on devrait choisir Express.js.

Grâce à Express.js, on peut développer un back-end en bénéficiant de la prise en charge de tous les packages NPM, ce qui facilite grandement le processus de développement. Express.js permet de gérer efficacement les requêtes entrantes, en offrant une gestion robuste de la logique d'entrée/sortie.

Enfin, Express.js bénéficie d'une large communauté open source très active et solidaire, ce qui en fait un choix très intéressant pour le développement back-end en JavaScript.


c. **React.JS**:


React.js est une bibliothèque JavaScript pour la construction d'interfaces utilisateur. Il se base sur le concept d'application mono-page (SPA - Single Page Application).

Une application mono-page consiste à accéder à l'intégralité de l'application web depuis une seule et même page. Cela évite de devoir recharger la page complète à chaque interaction de l'utilisateur, comme c'est le cas dans les applications web traditionnelles.

Cette approche permet d'offrir une expérience utilisateur beaucoup plus fluide et rationalisée, car l'application peut se mettre à jour dynamiquement sans nécessiter de rechargement complet de la page. L'utilisateur a ainsi l'impression d'interagir avec une application de bureau plutôt qu'avec un site web classique.

Cette architecture mono-page, combinée aux puissantes capacités de React.js en matière de conception d'interfaces utilisateur, en fait un choix très populaire pour le développement d'applications web modernes et réactives.

d. **Node.js**:

Node.js est un environnement d'exécution JavaScript côté serveur qui est reconnu pour ses performances élevées. Cette rapidité s'explique principalement par le fait que Node.js utilise un modèle d'exécution asynchrone et événementiel.

Plutôt que de bloquer le thread principal lors de l'exécution d'opérations lentes comme les accès disque ou réseau, Node.js gère ces opérations de manière asynchrone. Cela lui permet de rester très réactif et de traiter de nombreuses requêtes simultanément sans ralentir.

Ces performances impressionnantes, en comparaison à d'autres langages de programmation côté serveur, permettent aux applications développées avec Node.js d'accéder aux données de manière beaucoup plus rapide. C'est un avantage crucial dans un contexte où les utilisateurs attendent des temps de chargement de page inférieurs à la seconde.

De plus, cette grande efficacité de Node.js se traduit également par des coûts d'exploitation serveur réduits, car moins de ressources matérielles sont nécessaires pour atteindre des niveaux de performance élevés.

##**Voici quelques avantages des applications et des services**

- Les exigences complexes du site Web peuvent être divisées en segments pour gagner du temps.
- Couvre tout, du développement front-end au développement back-end.
- Tout est sous contrôle, du développement frontend au développement backend.
- Basculement facile entre le développement front-end et back-end en fonction des exigences du projet.
- Il est facile de s’approprier la conception et la mise en œuvre sur un site.
- Facile à mettre à niveau avec de nouvelles technologies et de nouveaux outils plus rapidement qu'une personne spécialisée uniquement dans la technologie front-end ou back-end.
- Compatible avec les quatre principales technologies MongoDB, Express.js, React et Node.js.
- Ce sont des frameworks open source et soutenus par de bons supports communautaires.
- Peut être utilisé pour développer des PWA. Les applications Web progressives rassemblent le monde avec les navigateurs, les sites Web et les applications mobiles.


##**3. Comment créer une application CRUD dans un projet MERN ?**##

Voici un développement plus détaillé sur les opérations CRUD dans une application React :

**Création d'une application CRUD de base avec MERN**

Ce point sera démontré sous forme de tutoriel dans la pratie 2. Nous allons développer une application CRUD permettant aux utilisateur de créer, lire, modiffier et supprimer du contenue dans la base de donnée en utilisant les REST API.

Voici les étapes pour créer une application CRUD:

##_Configuration de l'environnement_

On commence par installer et configurer les outils nécessaires :
- Node.js et npm (gestionnaire de paquets Node)
- Un serveur MongoDB (local ou en ligne)
- Créer un nouveau projet React avec create-react-app
- Initialiser un nouveau projet Express.js

##_Implémentation du backend avec Express.js et MongoDB_

Sur le serveur, crée les endpoints REST API qui permettront d'effectuer les opérations CRUD :

1. **Create (Créer)** :
   - Endpoint : `POST` `/api/items`
   - Exemple : Créer un nouvel élément dans la base de données en envoyant les données dans le corps de la requête `POST`

2. **Read (Lire)** :
   - Endpoint : `GET` `/api/items`
   - Exemple : Récupérer la liste de tous les éléments dans la base de données
   - Endpoint : `GET` `/api/items/:id`
   - Exemple : Récupérer les détails d'un élément spécifique en utilisant son identifiant

3. **Update (Mettre à jour)** :
   - Endpoint : `PUT` `/api/items/:id`
   - Exemple : Mettre à jour les informations d'un élément existant en envoyant les nouvelles données dans le corps de la requête `PUT`

4. Delete (Supprimer) :
   - Endpoint : `DELETE` `/api/items/:id`
   - Exemple : Supprimer un élément existant en utilisant son identifiant dans l'`URL` de la requête `DELETE`

##_Implémentation du frontend avec React.js_

Côté client, on crée les composants React qui permettront d'interagir avec les endpoints `REST API` :

1. **Composant de liste d'éléments** :
   - Récupérer la liste des éléments via une requête `GET` `/api/items`
   - Afficher la liste des éléments dans le composant

2. **Composant de détails d'un élément** :
   - Récupérer les détails d'un élément spécifique via une requête `GET` `/api/items/:id`
   - Afficher les informations de l'élément dans le composant

3. **Composant de création d'un élément** :
   - Permettre à l'utilisateur de saisir les informations d'un nouvel élément
   - Envoyer ces données via une requête `POST` `/api/items` pour créer le nouvel élément

4. **Composant de mise à jour d'un élément** :
   - Récupérer les informations de l'élément à mettre à jour via une requête `GET` `/api/items/:id`
   - Permettre à l'utilisateur de modifier les informations de l'élément
   - Envoyer les nouvelles données via une requête `PUT` `/api/items/:id` pour mettre à jour l'élément

5. **Composant de suppression d'un élément** :
   - Ajouter un bouton de suppression qui envoie une requête `DELETE` `/api/items/:id` pour supprimer l'élément

##_Déploiement de l'application_

Une fois le développement terminé, nous pourrons déployer l'application sur un serveur en ligne (par exemple, sur un service cloud comme AWS, Google Cloud, Heroku, versel ou gitpage) pour la rendre accessible aux utilisateurs.

**Conclusion Partielle**

Comme expliqué ci-dessus, l'ensemble du système, y compris le front-end, le back-end et la base de données, utilise l'API REST, qui agit comme un « middleware » et est réutilisable pour toute autre application comme un mobile, un logiciel, etc., très facilement. MERN est utilisé pour créer des pages Web qui entrent dans la catégorie premium SPA (application à page unique) Rendu rapide des pages Web.