AnnuncioTi presentiamo MongoDB 8.0, il MongoDB più veloce di sempre! Leggi >
AnnuncioVoyage AI si unisce a MongoDB per potenziare applicazioni AI più accurate e affidabili su Atlas. Scopra di più >

Come utilizzare lo stack MERN: una guida completa

Avrai bisogno di accedere a un database MongoDB Atlas per questo tutorial. Se non hai un account, puoi registrarti gratuitamente per seguirlo.

Inizia gratis

Questo tutorial ti mostrerà come creare un'applicazione MERN full-stack, in questo caso un database di dipendenti, con gli strumenti più recenti disponibili. Prima di iniziare, assicurati di avere familiarità con le basi di Node.js e React.js. Per questo tutorial sarà inoltre necessario avere accesso a un database MongoDB Atlas. Il codice completo è disponibile nel repository GitHub.

Sommario

Cos'è lo stack MERN?

Lo stack MERN è un framework di sviluppo web composto da MongoDB, Express, React.js e Node.js. È una delle diverse varianti dello stack MEAN.

Quando si utilizza lo stack MERN, si lavora con React per implementare il layer di presentazione, con Express e Node.js per creare il layer intermedio o applicativo e con MongoDB per creare il layer del database.

In questo tutorial sullo stack MERN, utilizzeremo queste quattro tecnologie per sviluppare un'applicazione di base in grado di registrare le informazioni dei dipendenti e visualizzarle utilizzando il frontend React.

Come iniziare a utilizzare lo stack MERN

Per iniziare, dovrai fare quanto segue:

Un'illustrazione raffigurante un video tutorial.

Se ti è più facile apprendere guardando video e immagini, dai un'occhiata alla versione video di questo tutorial.

Configurazione del progetto

(Inserisci pure il codice man mano che leggi il tutorial o scarica il codice completo dal repository GitHub.)

MERN ci consente di creare soluzioni full-stack. Quindi, per sfruttarne appieno il potenziale, creeremo un progetto stack MERN. Per questo progetto, creeremo sia un backend che un frontend. Il frontend sarà implementato con React e il backend sarà implementato con MongoDB, Node.js ed Express. Chiameremo il client frontend e il server backend.

Iniziamo creando una directory vuota: mern. Questa cartella conterrà le nostre cartelle client e server.

Quindi, creiamo una cartella per il backend e denominiamola server. Dopodiché, inizializzeremo il file package.json usando npm init.

Per utilizzare i moduli ECMAScript, il formato standard ufficialmente supportato per impacchettare il codice JavaScript da riutilizzare, aggiungeremo una riga al file package.json.

Installeremo anche le dipendenze.

Il comando sopra installa tre diversi pacchetti:

  • mongodb: il driver del database MongoDB che consente alle applicazioni Node.js di connettersi al database e lavorare con i dati
  • express: il framework web per Node.js (ci renderà la vita più semplice)
  • cors: un pacchetto Node.js che consente la condivisione di risorse tra origini diverse

Possiamo controllare le dipendenze installate nel file package.json. Dovrebbe elencare i pacchetti insieme alle loro versioni.

Dopo esserci assicurati che le dipendenze siano state installate correttamente, creiamo un file chiamato server.js con il seguente codice:

mern/server/server.js

Qui stiamo importando express e cors da utilizzare. const port = process.env.PORT accederà alla variabile porta dal file config.env che creeremo dopo.

Connessione a MongoDB Atlas

È il momento di collegare il nostro server al database. Utilizzeremo MongoDB Atlas come database. MongoDB Atlas è un servizio di database basato su cloud che offre una solida sicurezza e affidabilità dei dati. MongoDB Atlas fornisce un cluster di livello gratuito che non scade mai e consente di accedere a un sottoinsieme di caratteristiche e funzionalità di Atlas.

Segui la guida Inizia subito con Atlas per creare un account, distribuire il tuo primo cluster e individuare la stringa di connessione del tuo cluster.

Ora che hai la stringa di connessione, torna alla directory del server e crea un file config.env. Qui, assegna la stringa di connessione a una nuova variabile ATLAS_URI. Una volta terminato, il file dovrebbe apparire simile a quello qui sotto. Sostituisci < username >, < password >, < clusterName >, e < projectId > con il nome utente, la password, il nome del cluster e l'ID del progetto del tuo database.

mern/server/config.env

Crea una cartella sotto la directory del server denominata db e al suo interno un file denominato connection.js. Lì possiamo aggiungere il seguente codice per connetterci al nostro database:

mern/server/db/connection.js

Endpoint API del server

Database completato. Server completato. Ora è il momento degli endpoint API. Iniziamo creando una cartella routes e aggiungendo record.js al suo interno. Torna alla directory "server" e crea la nuova directory e il nuovo file:

Il file routes/record.js conterrà anche le seguenti righe di codice:

mern/server/routes/record.js

Se esegui l'applicazione a questo punto, riceverai il seguente messaggio nel tuo terminale, mentre si stabilisce la connessione. Notare che stiamo utilizzando la funzionalità delle variabili di ambiente integrata delle versioni più recenti di Node.js.

Questo è tutto per il backend. Ora inizieremo a lavorare sul frontend.

Configurazione dell'applicazione React

Per il frontend, useremo Vite, un modo moderno per creare un'applicazione React. In un nuovo terminale all'interno della directory mern, impostiamo questo:

Ci sono alcune dipendenze aggiuntive che verranno utilizzate nel nostro progetto. Inizieremo con Tailwind CSS.

Successivamente, modificheremo il campo del contenuto nel file tailwind.config.js.

Nel file src/index.css dobbiamo aggiungere le direttive Tailwind ed eliminare tutto il resto.

Infine, installeremo react-router-dom.

Tailwind è un framework CSS utility-first che consente di aggiungere stili CSS utilizzando nomi di classe predefiniti. E React Router aggiunge il routing delle pagine lato client a React!

Configurazione del router React

All'interno di src/main.jsx, aggiungeremo il seguente codice:

mern/client/src/main.jsx

Abbiamo impostato i percorsi della nostra pagina applicativa nella variabile router e abbiamo utilizzato RouterProvider per mantenere la nostra IU sincronizzata con l'URL. RouterProvider aiuta con transizioni senza interruzioni durante il passaggio da un componente all'altro. In pratica, ricaricherà o aggiornerà solo il componente che deve essere modificato, invece di aggiornare o ricaricare l'intera pagina. Sebbene React Router non sia obbligatorio, è importante se vuoi che la tua app sia reattiva.

Creazione di componenti

Successivamente, creiamo i componenti che abbiamo definito nei nostri percorsi. Crea una cartella components all'interno della cartella src. Per ogni componente che creiamo, aggiungeremo un nuovo file .js nella cartella dei componenti. In questo caso aggiungeremo Navbar.jsx, RecordList.jsx e ModifyRecord.jsx.

Gli snapshot seguenti mostrano l'aspetto di ciascun file.

Navbar.jsx

Nel componente navbar.js, creeremo una barra di navigazione che ci collegherà ai componenti necessari utilizzando il seguente codice.

mern/client/src/componenti/Navbar.jsx

RecordList.jsx

Il seguente codice servirà come componente di visualizzazione per i nostri record. Recupererà tutti i record nel nostro database attraverso un metodo GET.

mern/client/src/components/RecordList.jsx

Record.jsx

Il codice seguente fungerà da componente del modulo per creare o aggiornare i record. Questo componente invierà un comando di creazione o un comando di aggiornamento al nostro server.

mern/client/src/components/Record.jsx*

Ora, aggiungiamo quanto segue al file src/App.jsx.

mern/client/src/App.jsx

Questo è il nostro principale componente di layout. Il componente Navbar sarà sempre nella parte superiore di ogni pagina e l'Outlet accetterà i componenti figli che abbiamo definito nei nostri percorsi nel file main.jsx.

Collegamento del frontend al backend

Abbiamo completato il processo di creazione dei componenti. Abbiamo anche collegato la nostra app React al backend tramite fetch, che offre modi più puliti e semplici per gestire le richieste http. In Record.jsx, abbiamo aggiunto il seguente codice al blocco onSubmit(e). Quando una richiesta POST o PATCH viene inviata all'URL, fetch aggiungerà un nuovo record al database o aggiornerà un record esistente nel database.

Abbiamo anche inserito il seguente blocco di codice in Record.jsx sotto il blocco del costruttore per caricare un record esistente, se presente.

Infine, RecordList.jsx. RecordList.jsx recupera i record dal database, quindi useremo il metodo GET di fetch per recuperare i record dal database. Per raggiungere questo obiettivo, abbiamo aggiunto le seguenti righe di codice sopra la funzione RecordList() in RecordList.jsx.

Dopo aver chiuso tutto, per avviare l'app, segui i passaggi seguenti:

  • Assicurati che l'app del server sia ancora in esecuzione. In caso contrario, avviala eseguendo il seguente comando nella directory del server:
  • In un nuovo terminale, vai alla directory client ed esegui il comando:

Ecco come apparirà la pagina di destinazione del componente record dopo aver aggiunto i record per "Jesse Hall", "Kushagra Kesav" e "Stanimira Vlaeva" tramite il pulsante "Create Employee".

Ecco come apparirà la schermata che ti permetterà di aggiungere un dipendente:

Congratulazioni per aver creato la tua prima applicazione MERN. Per ulteriori idee e concetti avanzati, visita il nostro Developer Center e se hai delle domande, pubblicale nei nostri forum della community.

Primi passi con MongoDB Atlas

Prova gratuita
Ulteriori Informazioni