CONTATTACI

Blog

Sviluppatrice al computer che strizza l occhiolino al logo di node.js

Node.js: guida introduttiva e tutorial

Node.js cos'è

Node.js è un runtime JavaScript costruito sul motore JavaScript V8 di Chrome. Non è né un linguaggio di programmazione né un framework.

Possiamo definire node.js come un ambiente che ci permette di eseguire codice Javascript al di fuori del browser. Come sai il linguaggio Javascript  è un linguaggio di programmazione prettamente front-end che ci consente di manipolare il DOM e di rendere interattive le nostre pagine web. Tuttavia, con Node.js abbiamo la possibilità di sviluppare un'intera applicazione web, front-end e back-end, utilizzando un solo linguaggio di programmazione.

Node.js è costruito sul motore JavaScript V8 di Chrome. Ma cosa significa esattamente?

V8 è il nome del motore sviluppato da Google per eseguire e compilare Javascript, viene utilizzato in Chrome e, per l'appunto, in Node.js. Il motore V8 è scritto in C++, implementa ECMAScript e può essere eseguito autonomamente o può essere incorporato in qualsiasi applicazione C++.

Come funziona Node.js

Node.js utilizza l'Event Loop a thread singolo per gestire le diverse operazioni di input/output (lettura/scrittura files, accesso database, richieste di rete) in maniera asincrona e non bloccante.

Nei modelli multi-thread quando più client inviano una richiesta, il server elabora le richieste ed assegna ad ognuna di esse un thread. I thread vengono utilizzati per gestire più client simultaneamente.

Node.js funziona in modo diverso poiché è una modello a thread singolo, l'Event Loop gli permette di gestire più client contemporaneamente. 

L'Event Loop non è altro che un ciclo di eventi, il suo compito principale è quello di attendere le richieste a tempo indeterminato. Ogni volta che arriva una richiesta, Node.js la inserisce in una coda (queue). L'Event Loop preleva la richiesta dalla coda e verifica se richiede un'operazione di blocco input/output (I/O), in caso contrario, elabora la richiesta e invia una risposta. 
Se la richiesta ha un'operazione di blocco da eseguire, l'Event Loop assegna un thread per elaborare la richiesta. Node.js ha un numero limitato di thread in azione e vengono definiti worker threads.

L'Event Loop tiene traccia delle richieste di blocco e le inserisce nella coda una volta elaborata l'attività di blocco. In questo modo mantiene la sua natura non bloccante.  

A cosa serve Node.js

Node.js serve principalmente per la creazione di un server, per implementare API REST o GraphQL, per la realizzazione di un sistema di autenticazione, per la gestione dei dati e per interagire con API di terze parti.

Quando usare Node.js

Node.js è la soluzione ideale per lo sviluppo di applicazioni Web Real Time, spesso è utilizzato per la creazione di chatbot, per lo streaming di dati e per applicazioni su singola pagina. Quali sono i pro e i contro? Vediamoli insieme.

Pro

  • Node.js supporta le versioni principali a lungo termine, ha una vasta community di sviluppatori attivi e vanta il più grande repository di pacchetti open source del mondo, NPM, che attualmente contiene oltre un milione di pacchetti;
  • L'utilizzo di Javascript sia per il back-end che per il front-end si traduce in una maggiore efficienza e ciò permette agli sviluppatori di risparmiare una grande quantità di tempo; 
  • Node.js utilizza meno thread e di conseguenza meno risorse/memoria, ciò consente un'esecuzione più rapida delle attività;
  • Node.js è un componente fondamentale per le applicazioni stack MEAN, MERN o MEVN. Uno stack di solito è costituito da un database (linguaggio SQL o NoSQL), tecnologia back-end (Node.js e Express.js) e front-end (Angular, React o Vue).

Contro

  • Essendo a thread singolo, Node.js non è l'ideale per elaborare attività pesanti ad alta intensità, l'utilizzo di linguaggi multi-thread come Java sono la scelta migliore;
  • I pacchetti NPM possono certamente semplificare il lavoro degli sviluppatori. Tuttavia non tutti i pacchetti presentati sono di alta qualità, alcuni sono incompleti e non adeguatamente documentati.

Quali possono essere le alternative?

Per sviluppare applicazioni web lato server è possibile utilizzare diversi linguaggi e framework come ad esempio:

Come installare Node.js

  1. Visita la pagina Download del sito ufficiale di Node.js e scegli la versione che desideri installare;
  2. Scarica il programma di installazione predefinito per la tua piattaforma;
  3. Una volta avviata l'installazione si aprirà una schermata, segui i passaggi predefiniti lasciando le impostazioni predefinite;
  4. Per verificare di aver completato l'installazione con successo apri il terminale e digita il comando "node -v", in questo modo otterrai il numero della versione node.js che hai appena installato.

Installare Node.js su Windows

Scarica Windows Installer direttamente dal sito Web nodejs.org.

Installare Node.js su Mac

Scarica macOS Installer direttamente dal sito Web nodejs.org. Puoi scegliere tra due formati, .pkg (consigliata) e .tar.gz.

Con Homebrew

  1. Apri il terminale e utilizza il comando seguente: brew install node
  2. Verifica l'installazione tramite il comando: node -v

Installare Node.js su Linux

Su Ubuntu 18.04 puoi installare Node.js tramite il repository ufficiale di Ubuntu:

  1. Apri il terminale e utilizza il comando seguente: sudo apt install nodejs
  2. Verifica l'installazione tramite il comando: node -v

Differenza tra la versione LTS e la versione corrente

LTS è l'acronimo di Long Term Support, supporto a lungo termine, la versione Node LTS è quella più stabile e sicura. Le applicazioni in fase di sviluppo dovrebbero utilizzare le versioni LTS.
La versione corrente è quella in fase di sviluppo attivo; in genere Node.js rilascia una nuova versione principale ogni 6 mesi.

Tutorial Node.js

In questo tutorial troverai un esempio che ti aiuterà a creare un server in Node.js.

Creare un server con Node.js

Apriamo l'editor di testo, creiamo un nuovo file "app.js" e iniziamo.

//importiamo il modulo http

const http = require('http')


//impostiamo una porta

const port = 3000


//creiamo un server

//req e res sono l'abbreviazione di request e response

const server = http.createServer((req, res) => {

    //vediamo da cosa è composta una richiesta

    console.log(req);

    //rispondiamo alla richiesta con una pagina html

    res.setHeader('Content-type', 'text/html')

    //scriviamo un titolo

    res.write('<h1>Ho creato un server con Node.js</h1>');

    //terminiamo il processo di risposta

    res.end();

})


//mettiamo il server in ascolto sulla porta che abbiamo impostato

server.listen(port, () => {

    //verifichiamo che il server sia in funzione

    console.log(`Server is running on port:${port}`);

})

HTTP è un modulo incluso in Node.js che consente di avviare un server e di trasferire dati tramite il protocollo HTTP. Per poter utilizzare i moduli di Node.js dobbiamo prima includerli all'interno dei nostri file javascript, require ci permette di fare questo.

Il server è impostato per restare in ascolto sulla porta (port) specificata, in questo caso la numero 3000.

Utilizziamo il metodo createServer() di http per elaborare una richiesta (request) e una risposta (response), la funzione ci permetterà di vedere in console da cosa è composta una richiesta e di rispondere con una pagina di tipo html, il metodo setHeader() consente di impostare il tipo di contenuto da restituire.

Il metodo write() invia un pezzo del corpo della risposta, nel nostro caso il pezzo è una stringa "<h1>Ho creato un server con Node.js</h1>". Infine terminiamo il processo di risposta con il metodo end().

Mettiamo il server in ascolto con il metodo listen() sulla nostra porta e verifichiamo che sia in funzione. Se tutto va come previsto troveremo il nostro messaggio di conferma nel terminale.

Per avviare il server apri il terminale e digita il seguente comando: node app.js

Nel terminale dovresti leggere "Server is running on port 3000". Ora visita http://localhost:3000/, il link restituirà la risposta che abbiamo impostato. Ritorna sul terminale, vedrai la richiesta che hai appena inviato al tuo server.

Congratulazioni, hai creato il tuo primo server in Node.js!  

Articoli correlati

Il linguaggio HTML (Hypertext Markup Language) è uno dei più conosciuti e diffusi: lo si trova infatti praticamente in tutte le pagine web esistenti. È una scelta popolare tra i principianti che si…

Seguici su Facebook

Vuoi entrare nel mondo della programmazione?

Scopri di più sui nostri corsi!

Chiamaci al numero verde

Contattaci su WhatsApp

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 115 €/mese.

Esempio di finanziamento 

Importo finanziato: € 2440 in 24 rate da € 115 – TAN fisso 9,55% TAEG 12,57% – importo totale del credito € 2841.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

*In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 210 €/mese.

Esempio di finanziamento  

Importo finanziato: € 4500 in 24 rate da € 210,03 – TAN fisso 9,68% TAEG 11,97% – importo totale del credito € 5146,55.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/01/2024 al 31/12/2024.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.