‫Istruttore: Ora, per
‫preparare il terreno per il
‫prossimo paio di lezioni, iniziamo imparando qualcosa sull'architettura Node.
‫Quindi rappresentiamo qui quell'architettura in termini
‫di dipendenze di Node, che sono
‫solo un paio
‫di librerie da cui Node dipende per funzionare correttamente.
‫Quindi il tempo di esecuzione del nodo ha
‫diverse dipendenze e
‫le più importanti sono il motore V8 (mumbles) e libuv.
‫Ora abbiamo detto prima che Node è un runtime JavaScript
‫basato sul motore V8 di Google, giusto?
‫E quindi, ecco perché appare qui come una dipendenza.
‫Se non fosse per V8, Node non avrebbe assolutamente
‫modo di comprendere il codice JavaScript che scriviamo.
‫E quindi, V8 è una parte
‫fondamentale nell'architettura Node.
‫Quindi, ancora una volta, il motore V8 è ciò che converte il codice
‫JavaScript in codice macchina che un computer può effettivamente comprendere.
‫Ok, ma questo da solo non è sufficiente per creare un intero
‫framework lato server come Node.
‫Ed è per questo che abbiamo anche libuv in Node.
‫E libuv è una libreria open source con
‫una forte attenzione all'IO asincrono.
‫Quindi, input output.
‫Questo livello è ciò che consente a Node
‫di accedere al sistema operativo del
‫computer sottostante, al file system, alla rete e altro ancora.
‫Oltre a ciò, libuv implementa anche due funzionalità estremamente importanti
‫di Node. JS che sono
‫il ciclo degli eventi e anche il pool di thread.
‫E in termini semplici, il ciclo degli eventi è
‫responsabile della gestione di attività semplici come l'esecuzione di richiamate
‫e I/O di rete mentre il pool di thread è per lavori più pesanti
‫come l'accesso ai file o la compressione o qualcosa del genere.
‫Ma imparerai tutto su questo,
‫quindi sul ciclo degli eventi e sul pool
‫di thread, nei prossimi due video.
‫Una cosa importante da
‫notare qui è che libuv è in realtà
‫completamente scritto in C++ e non in JavaScript.
‫E lo stesso V8, oltre a JavaScript, utilizza anche il codice C++.
‫Quindi, Node stesso è un programma scritto
‫in C++ e JavaScript e non solo in JavaScript come
‫ci si potrebbe aspettare, giusto?
‫Ora la bellezza di questo è che Node. JS lega
‫insieme tutte queste librerie, non importa
‫se scritte in C++ o JavaScript, e quindi
‫dà a noi sviluppatori l'accesso alle loro funzioni in puro JavaScript.
‫Quindi ci fornisce davvero un ottimo
‫livello di astrazione per rendere la nostra vita molto più
‫semplice invece di dover pasticciare con il codice C++.
‫Sarebbe un'esperienza terribile, giusto?
‫Quindi, ancora una volta, questa architettura ci consente di scrivere
‫codice JavaScript puro al 100%,
‫in esecuzione in Node. JS e accedono ancora
‫a funzioni come per la lettura dei
‫file, che dietro le quinte sono
‫effettivamente implementate in libuv o in altre librerie nel linguaggio C++.
‫E parlando di
‫altre librerie, Node in realtà non si basa
‫solo su V8 e libuv, ma anche su http-parser per
‫l'analisi di http, c-ares o qualcosa del genere per alcune richieste
‫DNS, OpenSSL per la keepography e anche zlib per la compressione.
‫E questi non sono così importanti da capire, va bene?
‫Quindi alla fine, quando tutti questi pezzi si incastrano
‫bene insieme, finiamo con Node. JS pronto per essere utilizzato
‫sul lato server di tutte e quattro le applicazioni.
‫E poi, imparerai di più sui thread in Node
‫e sul pool di thread.
‫Quindi resta sintonizzato per quello.