node.js javascript framework server

Che cosa è esattamente Node.js?

Node.js è un ambiente runtime JavaScript. Sembra grandioso, ma cosa significa?
Come funziona? L'ambiente run-time Node include tutto ciò che è necessario per eseguire un programma scritto in JavaScript.
Se conosci Java, ecco un po 'di analogia. Node.js è nato quando gli sviluppatori originali di JavaScript l'hanno esteso da qualcosa che si poteva eseguire solo nel browser a qualcosa che si poteva eseguire sul proprio computer come applicazione autonoma.
Ora puoi fare molto di più con JavaScript piuttosto che creare siti web interattivi. JavaScript ora ha la capacità di fare cose che altri linguaggi di scripting come Python possono fare.
Sia il tuo browser JavaScript che Node.js vengono eseguiti sul motore di runtime JavaScript V8. Questo motore prende il tuo codice JavaScript e lo converte in un codice macchina più veloce.
Il codice macchina è un codice di basso livello che il computer può eseguire senza dover prima interpretarlo.
Perché Node.js?
Ecco una definizione formale fornita sul sito web ufficiale di Node.js: Node.js® è un runtime JavaScript creato sul motore JavaScript V8 di Chrome.
Node.js utilizza un modello I / O non bloccante basato sugli eventi che lo rende leggero ed efficiente.

L'ecosistema di pacchetti di Node.js, npm, è il più grande ecosistema di librerie open source al mondo. Abbiamo già discusso la prima riga di questa definizione: "Node.js® è un runtime JavaScript creato sul motore JavaScript V8 di Chrome." Ora comprendiamo le altre due righe in modo che possiamo scoprire perché Node.js è così popolare. 

Si consideri uno scenario in cui richiediamo un database di back-end per i dettagli di user1 e user2 e quindi li stampiamo sullo schermo / console. La risposta a questa richiesta richiede tempo, ma entrambe le richieste di dati degli utenti possono essere eseguite in modo indipendente e allo stesso tempo.

Blocco I / O (sinistra) vs I / O non bloccante (destra) Confronto Blocchi
Blocco I / O Nel metodo di blocco, la richiesta di dati dell'utente2 non viene avviata fino a quando i dati dell'utente1 non vengono stampati sullo schermo.
Se si trattasse di un server Web, dovremmo avviare una nuova discussione per ogni nuovo utente. Ma JavaScript è a thread singolo.
Quindi questo renderebbe JavaScript non molto adatto per le attività multi-thread. È qui che entra in gioco la parte non bloccante. I / O non bloccante D'altra parte, utilizzando una richiesta non bloccante, è possibile avviare una richiesta di dati per utente2 senza attendere la risposta alla richiesta per utente1. È possibile avviare entrambe le richieste in parallelo.

Questo I / O non bloccante elimina la necessità di multi-threading poiché il server è in grado di gestire più richieste contemporaneamente.

Nel video sottostante in lingua inglese viene spiagato il Node Event Loop:


Sorgente Articolo:https://medium.freecodecamp.org/what-exactly-is-node-js-ae36e97449f5