En titt på ECMAScript, Javascript-tolkar och transpilers.
Jaascriptvärlden kan vara en förvirrande värld. Folk pratar om ECMAScript, Javascript, ES5 och ES2015 (som förresten är samma sak som ES6).
I den här artikeln kommer jag att förklara Javascript-landskapet.
ECMAScript är en språkspecifikation och Javascript implementerar denna specifikation.
Vartannat år släpper ECMAScript en ny version. I princip innehåller den nya versionen en lista över nya funktioner som bör läggas till.
I den nya ECMAScript-versionen kan det till exempel finnas en ny funktion: add()
som adderar två tal.
Så kan man äntligen addera två tal med en funktion – jag vet att detta inte är en användbar funktion, men ha överseende med mig för exemplets skull 🙌
const result = add(12, 4);
console.log(result);
När detta har beslutats är det upp till alla Javascript-tolkare att implementera den nya funktionen.
Javascript-tolkare
En Javascript-tolkare är ett program som läser och utför Javascript-kod. Alla webbläsare som har stöd för Javascript är Javascript-tolkare.
Förutom webbläsare finns det även andra Javascript-tolkare. NodeJS är ett primärt exempel på en tolk som låter oss utföra Javascript utanför en webbläsare. Det är en tolk eftersom den också läser och utför Javascript (samt tillhandahåller API:er till operativsystemet).
Inte alla uppdaterar sin webbläsare, och alla webbläsare har inte stöd för samma Javascript-funktioner. Och det är här som det blir rörigt.
Den senaste ECMAScript-versionen är ES10. Alla webbläsare stöder dock inte denna nya ES-version eftersom de fortfarande måste implementera de nya funktionerna.
Det finns dessutom många som har föråldrade versioner av sin webbläsare, så det kan ta ett tag innan alla användare kan utföra de nya tjusiga ES10-funktionerna.
ES-versioner
Vi tar en liten avstickare och pratar om ES-versioner.
Som jag nämnde i föregående avsnitt är den senaste versionen av ECMAScript ES10. Nu finns det inte riktigt någon namnkonvention när det gäller ECMAScript-versioner. Så ES10 kallas också ECMAScript2019 och ES2019.
Den sista riktigt stora förändringen av språket skedde dessutom med ES6 som kom ut 2015 så den kallas ibland också ES2015 – Ja det är förvirrande, jag vet 😌
Då det bara finns mindre förändringar av språket efter ES6 kallas alla versioner efter ES6 ibland också för ESNext.
Javascript Transpilers
Kommer du ihåg problemet med att inte alla webbläsare stöder de senaste ES10-funktionerna? Det finns en lösning. Transpilers!
Babel är ett exempel på en Javascript transpiler. Babel omvandlar en nyare Javascript-version till en äldre. På så sätt kan du använda de nya tjusiga ES10-funktionerna och låta Babel transpila den till den allmänt stödda ES5-versionen.
Skillnaden mellan NodeJS och Browsers
NodeJS och Browsers är båda Javascript-tolkare. Beroende på vilken webbläsarversion och vilken Node-version du har kan de stödja samma version av ECMAScript.
Node exekveras dock direkt på en dator. Detta innebär att det finns ett antal bibliotek som levereras med Node och som inte fungerar i webbläsaren.
I NodeJS kan du till exempel skapa nya filer. I en webbläsare skulle detta vara en stor säkerhetsrisk så detta är inte möjligt.
Det är därför NodeJS-program som är skrivna i samma ECMAScript-version ändå inte kommer att köras i din webbläsare som har stöd för samma version.