Uno sguardo a ECMAScript, interpreti Javascript e transpilers.
Il mondo Javascript può essere un mondo confuso. La gente parla di ECMAScript, Javascript, ES5, e ES2015 (che è lo stesso di ES6).
In questo articolo, spiegherò il panorama Javascript.
ECMAScript è una specifica del linguaggio, e Javascript implementa questa specifica.
Ogni pochi anni ECMAScript rilascia una nuova versione. Fondamentalmente, la nuova versione contiene una lista di nuove caratteristiche che dovrebbero essere aggiunte.
Per esempio, nella nuova versione di ECMAScript potrebbe esserci una nuova funzione: add()
che aggiunge due numeri.
In questo modo si possono finalmente aggiungere 2 numeri con una funzione – so che questa non è una caratteristica utile ma abbiate pazienza per il bene dell’esempio 🙌
const result = add(12, 4);
console.log(result);
Quando questo è stato deciso, spetta a tutti gli interpreti Javascript implementare questa nuova caratteristica.
Interpreti Javascript
Un interprete Javascript è un programma che leggerà ed eseguirà il codice Javascript. Tutti i browser che supportano Javascript sono interpreti Javascript.
Oltre ai browser, ci sono anche altri interpreti Javascript. NodeJS è un esempio primario di un interprete che ci permette di eseguire JavaScript al di fuori di un browser. È un interprete perché legge ed esegue anche Javascript (oltre a fornire API al sistema operativo).
Non tutti aggiornano il loro browser, e non tutti i browser supportano le stesse funzionalità Javascript. Ed è qui che le cose si incasinano.
L’ultima versione di ECMAScript è ES10. Tuttavia, non tutti i browser supportano questa nuova versione ES perché devono ancora implementare le nuove caratteristiche.
Inoltre, ci sono molte persone con versioni non aggiornate dei loro browser, quindi potrebbe volerci un po’ prima che tutti gli utenti possano eseguire quelle nuove caratteristiche ES10.
Versioni ES
Facciamo una piccola deviazione e parliamo delle versioni ES.
Come ho detto nella sezione precedente, l’ultima versione di ECMAScript è ES10. Ora non c’è davvero una convenzione di denominazione quando si tratta di versioni di ECMAScript. Quindi ES10 è anche chiamato ECMAScript2019 e ES2019.
Inoltre, l’ultimo grande cambiamento al linguaggio è stato con ES6 che è uscito nel 2015 quindi a volte è anche chiamato ES2015 – Sì, è confuso, lo so 😌
Perché ci sono solo piccoli cambiamenti al linguaggio dopo ES6 tutte le versioni dopo ES6 sono a volte chiamate anche ESNext.
Javascript Transpilers
Ricordate il problema che non tutti i browser supportano le ultime caratteristiche di ES10? C’è una soluzione. Transpilers!
Babel è un esempio di transpiler Javascript. Babel convertirà una versione più recente di Javascript in una più vecchia. In questo modo si possono usare le nuove fantasiose caratteristiche ES10, e lasciare che Babel le transpiliri alla versione ES5 ampiamente supportata.
Differenza tra NodeJS e Browser
NodeJS e Browser sono entrambi interpreti Javascript. A seconda della versione del browser e della versione di Node che hai, possono supportare la stessa versione di ECMAScript.
Tuttavia, Node viene eseguito direttamente su un computer. Questo significa che ci sono un certo numero di librerie in bundle con Node che non funzionano nel browser.
Per esempio, in NodeJS è possibile creare nuovi file. In un browser, questo sarebbe un grosso rischio per la sicurezza, quindi non è possibile.
Ecco perché i programmi NodeJS scritti nella stessa versione di ECMAScript non funzioneranno comunque nel vostro browser che supporta la stessa versione.