Configuration du projet
(N’hésitez pas à coder avec nous ou à télécharger le code complet depuis le dépôt GitHub.)
MERN nous permet de créer des solutions full-stack. Pour exploiter tout son potentiel, nous allons donc créer un projet de pile MERN. Pour ce projet, nous créerons à la fois un back end et une interface. L’interface sera implémentée avec React et le back end sera implémenté avec MongoDB, Node.js et Express. Nous appellerons le client d’interface et le server back end.
Commençons par créer un répertoire vide : mern. Ce dossier contiendra nos dossiers client et serveur.
Ensuite, créez un dossier pour le back end et nommez-le « server ». Nous allons initialiser le fichier package.json en utilisant npm init.
Afin d’utiliser les modules ECMAScript, le format standard officiellement pris en charge pour empaqueter du code JavaScript à des fins de réutilisation, nous allons ajouter une ligne au fichier package.json.
Nous installerons également les dépendances.
La commande ci-dessus installe trois packages différents :
- mongodb : le pilote de base de données MongoDB qui permet à vos applications Node.js de se connecter à la base de données et de travailler avec les données
- express : le framework Web pour Node.js (cela nous facilitera la tâche)
- cors : un package Node.js qui permet le partage de ressources entre origines
Nous pouvons vérifier les dépendances installées dans le fichier package.json. Celui-ci doit lister les packages et leurs versions.
Après avoir vérifié que les dépendances ont été correctement installées, nous créons un fichier appelé server.js avec le code suivant :
mern/server/server.js
Ici, nous importons express et cors à utiliser. const port = process.env.PORT permet d’accéder à la variable port du fichier config.env que nous allons créer.
Connexion à MongoDB Atlas
Il est temps de connecter notre serveur à la base de données. Nous utiliserons MongoDB Atlas comme base de données. MongoDB Atlas est un service de base de données basé sur le cloud qui offre une sécurité et une fiabilité des données robustes. MongoDB Atlas propose un cluster gratuit qui n’expire jamais et qui vous permet d’accéder à un sous-ensemble de caractéristiques et de fonctionnalités d’Atlas.
Suivez le guide Démarrer avec Atlas pour créer un compte, déployer votre premier cluster et localiser la chaîne de connexion de votre cluster.
Maintenant que vous avez la chaîne de connexion, revenez au répertoire du serveur et créez un fichier « config.env ». Là, attribuez la chaîne de connexion à une nouvelle variable ATLAS_URI. Une fois terminé, votre fichier devrait ressembler à celui ci-dessous. Remplacez < username >, < password >, < clusterName >, et < projectId > par le nom d’utilisateur, le mot de passe, le nom du cluster et l’ID du projet de votre base de données.
mern/server/config.env
Créez un dossier sous le répertoire du serveur nommé db et, à l’intérieur de celui-ci, un fichier nommé connection.js. Nous pouvons y ajouter le code suivant pour nous connecter à notre base de données :
mern/server/db/connection.js
Points de terminaison de l’API serveur
Nous avons terminé la configuration de la base de données et du serveur. Passons maintenant aux points de terminaison de l’API. Commençons par créer un dossier routes et ajoutons le fichier record.js. Revenez à votre répertoire « server » et créez le nouveau répertoire et le nouveau fichier :
Le fichier routes/record.js contiendra également les lignes de code suivantes :
mern/server/routes/record.js
Si vous exécutez l’application à ce stade, vous obtiendrez le message suivant dans votre terminal lorsque la connexion sera établie. Notez que nous utilisons la fonctionnalité de variable d’environnement intégrée dans les dernières versions de Node.js.
C’est tout pour le back end. Passons maintenant au front end.
Configuration de l’application React
Pour cette partie, nous utiliserons Vite, une manière moderne de créer une application React. Dans un nouveau terminal dans le répertoire mern, configurons ceci :
Pour notre projet, nous allons utiliser quelques dépendances supplémentaires. Nous commencerons par Tailwind CSS.
Ensuite, nous allons modifier le champ de contenu dans le fichier tailwind.config.js.
Dans le fichier src/index.css, nous devons ajouter les directives Tailwind et supprimer tout le reste.
Enfin, nous allons installer react-router-dom.
Tailwind est un framework CSS utilitaire qui vous permet d’ajouter des styles CSS en utilisant des noms de classes prédéfinis. Et React Router ajoute le routage de page côté client à React !
Configuration du routeur React
Dans src/main.jsx, nous allons ajouter le code suivant :
mern/client/src/main.jsx
Nous avons configuré les routes de notre page d’application dans la variable router et utilisé RouterProvider pour synchroniser notre UI avec l’URL. RouterProvider permet des transitions fluides lors du passage d’un composant à l’autre. En fait, il ne rechargera ou n’actualisera que le composant qui doit être modifié au lieu d’actualiser ou de recharger la page entière. Bien que React Router ne soit pas une nécessité, il est important si vous voulez que votre application soit réactive.
Création des composants
Créons maintenant les composants que nous avons définis dans nos routes. Créez un dossier components dans le dossier src. Pour chaque composant que nous créons, nous ajouterons un nouveau fichier .js dans le dossier components. Dans ce cas, nous allons ajouter Navbar.jsx, RecordList.jsx et ModifyRecord.jsx.
Chaque fichier doit ressembler à ce que montrent les instantanés ci-dessous.
Navbar.jsx
Dans le composant navbar.js, nous allons créer une barre de navigation qui nous reliera aux composants requis à l’aide du code suivant.
mern/client/src/components/Navbar.jsx
RecordList.jsx
Le code suivant servira de composant de visualisation pour nos enregistrements. Il récupérera tous les enregistrements de notre base de données via une méthode GET.
mern/client/src/components/RecordList.jsx
Record.jsx
Le code suivant servira de composant de formulaire pour créer ou mettre à jour des enregistrements. Ce composant enverra une commande de création ou de mise à jour à notre serveur.
mern/client/src/components/Record.jsx*
Nous ajoutons maintenant ce qui suit au fichier src/App.jsx.
mern/client/src/App.jsx
Il s’agit de notre composant de mise en page principal. Notre Navbar sera toujours située en haut de chaque page et l’Outlet acceptera les composants enfants que nous avons définis précédemment dans nos routes dans le fichier main.jsx.
Connexion du front end au back end
Nous avons terminé le processus de création des composants. Nous avons également connecté notre application React au back end à l’aide de fetch, qui permet de gérer les requêtes HTTP de manière plus claire et plus simple. Dans Record.jsx, nous avons ajouté le code suivant au bloc onSubmit(e). Lorsqu’une requête POST ou PATCH est envoyée à l’URL, fetch ajoute un nouvel enregistrement à la base de données ou met à jour un enregistrement existant dans la base de données.
Nous avons également placé le bloc de code suivant dans Record.jsx sous le bloc constructeur afin de charger un enregistrement existant, le cas échéant.
Enfin, RecordList.jsx. RecordList.jsx récupère les enregistrements de la base de données. Nous allons donc utiliser la méthode GET fetch pour récupérer ces enregistrements. Pour ce faire, nous avons ajouté les lignes de code suivantes au-dessus de la fonction RecordList() dans RecordList.jsx.
Après avoir tout fermé, suivez ces étapes pour démarrer l’application :
- Assurez-vous que l’application serveur est en cours d’exécution. Si ce n’est pas le cas, exécutez la commande suivante dans le répertoire server pour la démarrer :
- Dans un nouveau terminal, accédez au répertoire client et exécutez la commande :
Voici à quoi ressemblera la page d’accueil du composant d’enregistrement une fois que nous aurons ajouté des enregistrements pour « Jesse Hall », « Kushagra Kesav » et « Stanimira Vlaeva » via le bouton « Créer un employé ».
L’écran qui vous permet d’ajouter un employé ressemble à ceci :
Félicitations ! Vous avez créé votre première application MERN. Pour d’autres idées et concepts avancés, consultez notre Centre pour les développeurs, et n’hésitez pas à poser vos questions dans nos forums communautaires.