Katsaus ECMAScriptiin, Javascript-tulkkeihin ja transpilereihin.
Tässä artikkelissa selitän Javascript-maailmaa.
ECMAScript on kielen spesifikaatio, ja Javascript toteuttaa tämän spesifikaation.
Muutaman kerran muutamassa vuodessa ECMAScript julkaisee uuden version. Periaatteessa uusi versio sisältää luettelon uusista ominaisuuksista, jotka pitäisi lisätä.
Uudessa ECMAScript-versiossa voi esimerkiksi olla uusi funktio: add()
, joka lisää kaksi lukua.
Siten voit vihdoin lisätä kaksi lukua funktiolla – tiedän, että tämä ei ole hyödyllinen ominaisuus, mutta kärsivällisyyttä esimerkin vuoksi 🙌
const result = add(12, 4);
console.log(result);
Kun tämä on päätetty, on kaikkien Javascript-tulkkien tehtävänä toteuttaa tämä uusi ominaisuus.
Javascript-tulkit
Javascript-tulkki on ohjelma, joka lukee ja suorittaa Javascript-koodia. Kaikki Javascriptiä tukevat selaimet ovat Javascript-tulkkeja.
Selaimien lisäksi on olemassa myös muita Javascript-tulkkeja. NodeJS on ensisijainen esimerkki tulkista, jonka avulla voimme suorittaa JavaScriptiä selaimen ulkopuolella. Se on tulkki, koska se myös lukee ja suorittaa Javascriptiä (sekä tarjoaa API:ita käyttöjärjestelmälle).
Eivät kaikki päivitä selainta, eivätkä kaikki selaimet tue samoja Javascript-ominaisuuksia. Ja tässä kohtaa asiat muuttuvat sotkuisiksi.
Uusin ECMAScript-versio on ES10. Kaikki selaimet eivät kuitenkaan tue tätä uutta ES-versiota, koska niiden on vielä toteutettava uudet ominaisuudet.
Tämän lisäksi monilla ihmisillä on vanhentuneet selainversiot, joten voi kestää jonkin aikaa, ennen kuin kaikki käyttäjät pystyvät suorittamaan nämä uudet hienot ES10-ominaisuudet.
ES-versiot
Tehdään pieni kiertotie ja puhutaan ES-versioista.
Kuten edellisessä kappaleessa mainitsin, ECMAScriptin uusin versio on ES10. Nyt ECMAScript-versioiden nimeämisessä ei ole oikeastaan mitään nimeämiskäytäntöä. Niinpä ES10:stä käytetään myös nimiä ECMAScript2019 ja ES2019.
Lisäksi viimeinen todella suuri muutos kieleen oli ES6, joka ilmestyi vuonna 2015, joten siitä käytetään joskus myös nimitystä ES2015 – Kyllä, se on hämmentävää, tiedän 😌
Koska ES6:n jälkeen kieleen on tehty vain pieniä muutoksia, kaikista ES6:n jälkeisistä versioista käytetään joskus myös nimitystä ESNext.
Javascript Transpilers
Muistatko ongelman, etteivät kaikki selaimet tue uusimpia ES10-ominaisuuksia? Tähän on olemassa ratkaisu. Transpilerit!
Babel on esimerkki Javascript-transpilerista. Babel muuntaa uudemman Javascript-version vanhemmaksi. Näin voit käyttää uusia hienoja ES10-ominaisuuksia ja antaa Babelin kääntää sen laajasti tuettuun ES5-versioon.
Ero NodeJS:n ja selainten välillä
NodeJS ja selain ovat molemmat Javascript-tulkkeja. Riippuen siitä, mikä selainversio ja mikä Node-versio sinulla on, ne voivat tukea samaa ECMAScript-versiota.
Node kuitenkin suoritetaan suoraan tietokoneella. Tämä tarkoittaa, että Noden mukana on useita kirjastoja, jotka eivät toimi selaimessa.
NodeJS:ssä voi esimerkiksi luoda uusia tiedostoja. Selaimessa tämä olisi suuri tietoturvariski, joten se ei ole mahdollista.
Sentähden NodeJS-ohjelmat, jotka on kirjoitettu samalla ECMAScript-versiolla, eivät silti toimi selaimessa, joka tukee samaa versiota.