Che cos'è Node.JS e a cosa serve?

0
229

Se stai facendo un qualsiasi tipo di sviluppo web, 8217; probabilmente dovrai imparare e scrivere JavaScript ad un certo punto. Node ha lo scopo di semplificare lo sviluppo di applicazioni web unificando i linguaggi lato server e lato client.

Cos'è Node?

Node.JS , comunemente indicato semplicemente come Nodo, è un runtime JavaScript che consente di eseguire codice JS al di fuori di un browser web. Il nodo è basato sul motore JavaScript V8 di Google, lo stesso utilizzato per l'elaborazione in Chrome.

È comunemente usato per creare applicazioni, lavorare con moderni framework di app Web e scripting lato server con JS. In pratica, Node ti consente di eseguire file .js con il comando node in modo simile a come eseguiresti file .py con python:

nodo main.js

Il codice JavaScript funziona in modo leggermente diverso durante l'esecuzione in Node. Prima di tutto, non esiste un DOM (l'HTML caricato di una pagina web), quindi non puoi accedere agli elementi HTML o utilizzare una libreria come jQuery in modo efficace (sebbene ci siano alternative). Tuttavia, hai accesso alle risorse di sistema e puoi leggere e scrivere file, creare connessioni di rete e persino servire applicazioni.

Node viene utilizzato anche per costruire app desktop, attraverso l'utilizzo di un framework chiamato Electron. Electron potenzia Slack, Discord, Visual Studio Code e Skype. In sostanza, esegue una versione ridotta di Chrome progettata per il desktop e l'app stessa è in realtà solo un'app web. Di conseguenza, però, le app Electron sono molto affamate di RAM e funzioneranno un po' peggio delle loro controparti native, ma questo scambio è spesso fatto per uniformità su tutti i sistemi operativi e sul Web.

L'ecosistema del nodo (moduli npm)

Il nodo in sé è interessante, ma non sarebbe da nessuna parte vicino a dove è oggi se non fosse per npm, il gestore di pacchetti del nodo. npm consente di estendere Node con framework e plug-in e consente di installare e incorporare facilmente il codice in un nuovo progetto.

Pubblicità

Ad esempio, supponiamo che tu stia lavorando su uno script e che sia necessario effettuare una richiesta POST a una risorsa esterna. Puoi utilizzare il metodo di recupero integrato di JS, oppure puoi utilizzare axios, che utilizza le promesse ed è più facile da usare. Se vuoi aggiungere axios al tuo progetto, devi spostare il tuo script nella sua cartella ed eseguire:

npm init npm install axios

Questo crea un file chiamato package.json, che tiene traccia delle impostazioni del progetto e dei pacchetti installati. Il comando npm install creerà una cartella denominata node_modules, che memorizza i moduli scaricati. Attenzione, questa cartella può essere molto grande su progetti di grandi dimensioni con molti moduli.

Per usare axios nel tuo script, dovresti mettere questa riga proprio in alto:

const axios = require('assio');

Oppure, nella sintassi ES6:

importa axios da 'axios';

Questo importa il modulo da node_modules e consente al tuo script di accedervi. Da lì, puoi usarlo come se fosse parte del tuo progetto e solo un'altra funzione che hai creato.

Axios è solo un esempio di base di un'utile utility npm. Probabilmente hai sentito parlare di altri moduli come React, Angular o Vue; tutti questi sono framework di applicazioni Web completi utilizzati per creare app interattive che vengono eseguite nel browser. Le app create con questi framework sono comunemente chiamate “app Node”.” Sebbene non siano effettivamente in esecuzione con Node, poiché il prodotto finale sarà HTML statico che puoi servire con qualsiasi vecchio server Web, Node viene utilizzato per lo sviluppo e i pacchetti vengono installati dall'ecosistema Node con npm.

Pubblicità

Dopo tutto è tutto JavaScript. Spesso, il codice di sviluppo utilizzerà “next-gen” JavaScript come ES6 ed essere compilato con Webpack e Babel in un unico grande “bundle.js” file che può essere servito al client per l'esecuzione.

Come funziona Node con nginx e Apache?

Il nodo stesso non si interfaccia direttamente con nginx o Apache, tutto ciò che fa il nodo è eseguire i file .js. Tuttavia, le app Node create con React o altri framework funzionano in modo leggermente diverso rispetto alle normali pagine HTML.

Con React, servi essenzialmente una pagina HTML vuota che carica un file bundle.js. Questo file bundle funziona come qualsiasi altro file javaScript e puoi utilizzare nginx o Apache come server web per ospitarlo. Il bundle carica React, che si visualizzerà quindi sulla pagina web e visualizzerà i tuoi contenuti. Tutto il contenuto è contenuto nel file bundle.

Una cosa da notare è una libreria popolare chiamata Express. Express serve contenuti web e può funzionare come server HTTP. È comunemente usato come router per creare un'API REST basata su nodi; Express può ascoltare su una porta, inoltrare la richiesta a un'altra funzione (in genere accedendo a un'altra risorsa come un database), quindi inviare una risposta HTTP.

In questo caso, metteresti Express dietro il server nginx che utilizzi per i tuoi contenuti statici e instradare tutti i percorsi /api a Express. Ciò consente alla tua app Web di accedere a risorse esterne e di sfruttare appieno la potenza di scripting lato server di Node e la capacità di interfacciarsi con i database. Puoi utilizzare nginx come proxy inverso per il percorso /api e usarlo come server web per gli altri contenuti statici.

Tuttavia, Express non è un server web. Non dovrebbe prendere il posto di nginx in questo esempio. Può funzionare come uno ed è molto utile configurare un semplice server Express per lo sviluppo o una semplice pagina che non riceve molto traffico. Ma è molto diverso dalle prestazioni di nginx e Apache, che sono app native. Se stai creando una vera applicazione web, servila con nginx e usa Express solo per servire le API.

Dovrei usare Node for My Sito web?

Stai realizzando una web app? In tal caso, dovresti prendere seriamente in considerazione Node. Le alternative sarebbero Ruby on Rails, Laravel con PHP e Django con Python. Ma Node ha di gran lunga la più grande community e ha molta scelta quando si tratta di framework. Se non ti piace Ruby on Rails, sei bloccato con esso senza imparare un altro linguaggio, ma il passaggio da un framework come React a Vue è molto più semplice, poiché sono entrambi JavaScript.

Pubblicità

Se non stai creando un'app Web, probabilmente non hai bisogno di Node. Non è pensato per le pagine statiche. Certamente puoi, ma non vedrai molti benefici. Se stai pianificando di utilizzare un framework web completo come React per un sito statico (o anche per lo più statico), potresti voler riconsiderare, poiché React introduce un sacco di sovraccarico nel tuo sito. I tempi di caricamento di React sono generalmente molto più lenti senza il rendering lato server, il che va bene per le applicazioni web progettate per sessioni di lunga durata, ma non per un blog o qualsiasi cosa in cerca di un buon SEO. Vanilla JS può fare un po' di manipolazione DOM da solo, specialmente con l'aiuto di jQuery.