Differenze tra Node.js e il Browser
Sia il browser che Node.js utilizzano JavaScript come linguaggio di programmazione. La creazione di app che funzionano nel browser è completamente diversa dalla creazione di un'applicazione Node.js. Nonostante sia sempre JavaScript, ci sono alcune differenze chiave che rendono l'esperienza radicalmente diversa.
Dal punto di vista di uno sviluppatore frontend che utilizza ampiamente JavaScript, le app Node.js offrono un enorme vantaggio: la comodità di programmare tutto - frontend e backend - in un unico linguaggio.
Si ha un'enorme opportunità perché sappiamo quanto sia difficile imparare a fondo un linguaggio di programmazione, e usando lo stesso linguaggio per svolgere tutto il lavoro sul web - sia sul client che sul server, ci si trova in una posizione di vantaggio unico.
TIP
Ciò che cambia è l'ecosistema.
Nel browser, la maggior parte delle volte ciò che si fa è interagire con il DOM o altre API della Web Platform come i cookie. Queste non esistono in Node.js, ovviamente. Non si dispone di document
, window
e di tutti gli altri oggetti forniti dal browser.
E nel browser, non abbiamo tutte le belle API che Node.js fornisce attraverso i suoi moduli, come la funzionalità di accesso al filesystem.
Un'altra grande differenza è che in Node.js si controlla l'ambiente. A meno che non si stia creando un'applicazione open source che chiunque può distribuire ovunque, si conosce la versione di Node.js su cui si eseguirà l'applicazione. Rispetto all'ambiente del browser, dove non si ha il lusso di scegliere quale browser utilizzeranno i visitatori, questo è molto conveniente.
Ciò significa che è possibile scrivere tutto il JavaScript ES2015+ moderno supportato dalla propria versione di Node.js. Poiché JavaScript si evolve rapidamente, ma i browser possono essere un po' lenti nell'aggiornamento, a volte sul web si è bloccati nell'utilizzo di versioni precedenti di JavaScript/ECMAScript. È possibile utilizzare Babel per trasformare il codice in modo che sia compatibile con ES5 prima di distribuirlo sul browser, ma in Node.js, non sarà necessario.
Un'altra differenza è che Node.js supporta sia i sistemi di moduli CommonJS che ES (da Node.js v12), mentre nel browser, si sta iniziando a vedere l'implementazione dello standard ES Modules.
In pratica, questo significa che è possibile utilizzare sia require()
che import
in Node.js, mentre nel browser si è limitati a import
.