Che cos'è NodeJS?

Node.js è un ambiente runtime JavaScript open source, multipiattaforma e lato server, basato sul motore JavaScript V8 di Chrome, originariamente scritto da Ryan Dahl e rilasciato nel 2009.

Node.js funziona in Windows?

Sì. Windows supporta due ambienti diversi per lo sviluppo di app con Node.js:

Cosa è possibile fare con NodeJS?

Node.js viene usato principalmente per la creazione di applicazioni Web veloci e scalabili. Usa un modello di I/O non bloccante basato su eventi, rendendolo leggero ed efficiente. È un ottimo framework per le applicazioni in tempo reale ad alta intensità di dati che vengono eseguite in dispositivi distribuiti. Di seguito sono riportati alcuni esempi di quello che è possibile creare con Node.js.

  • App a pagina singola (SPA): si tratta di applicazioni Web che funzionano all'interno di un browser e non hanno bisogno di ricaricare una pagina ogni volta che viene usata per ottenere nuovi dati. Alcuni esempi di app a singola pagina includono app di social networking, app di posta elettronica o di mappe, strumenti di disegno o di testo online e così via.
  • App in tempo reale (RTA): sono applicazioni Web che consentono agli utenti di ricevere informazioni non appena vengono pubblicate da un autore, anziché richiedere all'utente (o al software) di controllare periodicamente un origine per verificare la presenza di aggiornamenti. Alcune app in tempo reale di esempio includono app di messaggistica istantanea o di chat, giochi multiplayer online che possono essere riprodotti nel browser, documentazione per la collaborazione online, archiviazione della community, app per conferenze video e così via.
  • App per lo streaming di dati: si tratta di app (o servizi) che inviano dati/contenuti man mano che arrivano (o vengono creati), mantenendo aperta la connessione per continuare a scaricare altri dati, contenuti o componenti in base alle esigenze. Tra gli esempi rientrano le app di streaming audio e video.
  • API REST: si tratta di interfacce che forniscono dati per l'interazione dell'app Web di un altro utente. Un servizio API di calendario, ad esempio, può fornire date e ore per una sede di concerti che potrebbero essere usate dal sito Web di eventi locali di un altro utente.
  • Applicazioni con rendering lato server (SSR): queste app Web possono essere eseguite sul client (nel browser/front-end) e sul server (back-end), consentendo alle pagine dinamiche di visualizzare (generare codice HTML per) il contenuto noto e acquisire rapidamente i contenuti non noti come disponibili. Spesso si fa riferimento a queste app come "isomorfe" o "universali". Le app SSR utilizzano i metodi delle app SPA in quanto non richiedono il ricaricamento ogni volta che vengono usate. Tuttavia, le richieste pull offrono alcuni vantaggi che potrebbero o non essere importanti per te, ad esempio rendere i contenuti sul tuo sito visualizzati nei risultati della ricerca google e fornire un'immagine di anteprima quando i collegamenti alla tua app vengono condivisi sui social media come X o Facebook. Il potenziale svantaggio è che richiedono un server Node.js sempre in esecuzione. Per fare un esempio, un'app di social networking che supporta gli eventi che gli utenti vogliono che compaiano nei risultati della ricerca e sui social media può trarre vantaggio dalle app SSR, mentre un'app di posta elettronica può essere tranquillamente un'app SPA. È inoltre possibile eseguire app non a singola pagina con rendering sul lato server, come nel caso di un blog di WordPress. Come puoi notare, le cose possono farsi più complicate, sta a te decidere cos'è importante.
  • Strumenti della riga di comando: consentono di automatizzare le attività ripetitive e quindi di distribuire lo strumento nel vasto ecosistema Node.js. Un esempio di strumento da riga di comando è cURL, che sta per URL client e viene usato per scaricare contenuti da un URL Internet. cURL viene spesso usato per installare elementi come Node.js o, in questo caso, uno strumento di gestione delle versioni di Node.js.
  • Programmazione hardware: anche se non è così diffuso come le app Web, Node.js sta diventando sempre più popolare anche per l'IoT, ad esempio per la raccolta di dati da sensori, beacon, trasmettitori, motori o qualsiasi elemento che generi grandi quantità di dati. Node.js può consentire la raccolta e l'analisi dei dati, la comunicazione tra un dispositivo e un server e l'esecuzione di operazioni sulla base dell'analisi. NPM contiene più di 80 pacchetti per i controller Arduino, Raspberry Pi, Intel IoT Edison, diversi sensori e dispositivi Bluetooth.

Passaggi successivi