📢 Nuovo Corso Laravel API disponibile!

Introduzione a Node JS

Node.js è un ambiente di runtime JavaScript open-source e multipiattaforma. È uno strumento popolare per quasi ogni tipo di progetto!

Node.js esegue il motore JavaScript V8, il cuore di Google Chrome, al di fuori del browser. Questo consente a Node.js di essere molto performante.

Un’app Node.js viene eseguita in un singolo processo, senza creare un nuovo thread per ogni richiesta. Node.js fornisce un insieme di primitive di I/O asincrone nella sua libreria standard che impediscono al codice JavaScript di bloccarsi e, in generale, le librerie in Node.js sono scritte utilizzando paradigmi non bloccanti, rendendo il comportamento bloccante l’eccezione piuttosto che la norma.

Quando Node.js esegue un’operazione di I/O, come la lettura dalla rete, l’accesso a un database o al filesystem, anziché bloccare il thread e sprecare cicli CPU in attesa, Node.js riprenderà le operazioni quando arriva la risposta.

Ciò consente a Node.js di gestire migliaia di connessioni simultanee con un singolo server senza introdurre il peso della gestione della concorrenza dei thread, che potrebbe essere una fonte significativa di bug.

Node.js ha un vantaggio unico perché milioni di sviluppatori frontend che scrivono JavaScript per il browser sono ora in grado di scrivere il codice lato server oltre al codice lato client senza la necessità di imparare un linguaggio completamente diverso.

In Node.js, è possibile utilizzare senza problemi i nuovi standard ECMAScript, poiché non è necessario attendere che tutti gli utenti aggiornino i loro browser: sei tu a decidere quale versione di ECMAScript utilizzare cambiando la versione di Node.js, e puoi anche abilitare specifiche funzionalità sperimentali eseguendo Node.js con flag.

Un esempio di applicazione Node.js

L’esempio più comune di Hello World in Node.js è un server web:

const http = require("node:http");
const hostname = "127.0.0.1";
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain");
res.end("Hello World\n");
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});

Per eseguire questo frammento, salvalo come file server.js e esegui node server.js nel tuo terminale.

Questo codice include prima il modulo http di Node.js.

Node.js ha una libreria standard fantastica, compresa un supporto di prima classe per il networking.

Il metodo createServer() di http crea un nuovo server HTTP e lo restituisce.

Il server è impostato per ascoltare sulla porta e il nome host specificati. Quando il server è pronto, viene chiamata la funzione di callback, in questo caso per informarci che il server è in esecuzione.

Ogni volta che viene ricevuta una nuova richiesta, viene chiamato l’evento request, fornendo due oggetti: una richiesta (un oggetto http.IncomingMessage) e una risposta (un oggetto http.ServerResponse).

Questi 2 oggetti sono essenziali per gestire la chiamata HTTP.

Il primo fornisce i dettagli della richiesta. In questo semplice esempio, questo non viene utilizzato, ma potresti accedere agli header della richiesta e ai dati della richiesta.

Il secondo viene utilizzato per restituire i dati al chiamante.

In questo caso, con:

res.statusCode = 200;

impostiamo la proprietà statusCode a 200, per indicare una risposta riuscita.

Impostiamo l’header Content-Type:

res.setHeader("Content-Type", "text/plain");

e chiudiamo la risposta, aggiungendo il contenuto come argomento a end():

res.end("Hello World\n");