Pohled na ECMAScript, interprety a transpilery Javascriptu.
Svět Javascriptu může být matoucí. Lidé mluví o ECMAScriptu, Javascriptu, ES5 a ES2015 (což je mimochodem totéž co ES6).
V tomto článku vysvětlím prostředí Javascriptu.
ECMAScript je specifikace jazyka a Javascript tuto specifikaci implementuje.
Každých několik let vydává ECMAScript novou verzi. Nová verze v podstatě obsahuje seznam nových funkcí, které by měly být přidány.
Například v nové verzi ECMAScriptu může být nová funkce: add()
, která sečte dvě čísla.
Takto můžete konečně pomocí funkce sečíst dvě čísla – vím, že to není užitečná funkce, ale vydržte to se mnou kvůli příkladu 🙌
const result = add(12, 4);
console.log(result);
Když bude rozhodnuto, je na všech interpretech Javascriptu, aby tuto novou funkci implementovaly.
Interprety Javascriptu
Interpret Javascriptu je program, který bude číst a provádět kód Javascriptu. Všechny prohlížeče, které podporují Javascript, jsou interprety Javascriptu.
Kromě prohlížečů existují také další interprety Javascriptu. NodeJS je hlavním příkladem interpretu, který nám umožňuje spouštět JavaScript mimo prohlížeč. Je to interpret, protože také čte a vykonává Javascript (a také poskytuje rozhraní API operačnímu systému).
Ne každý aktualizuje svůj prohlížeč a ne všechny prohlížeče podporují stejné funkce Javascriptu. A tady se věci začínají zamotávat.
Nejnovější verze ECMAScriptu je ES10. Ne všechny prohlížeče však tuto novou verzi ES podporují, protože stále potřebují implementovat nové funkce.
Navíc existuje spousta lidí se zastaralými verzemi svých prohlížečů, takže může chvíli trvat, než všichni uživatelé budou moci tyto nové efektní funkce ES10 spustit.
Verze ES
Udělejme malou odbočku a promluvme si o verzích ES.
Jak jsem již zmínil v předchozí části, nejnovější verzí ECMAScriptu je ES10. Nyní neexistuje žádná konvence pro pojmenování, pokud jde o verze ECMAScriptu. Takže ES10 se také nazývá ECMAScript2019 a ES2019.
Navíc poslední opravdu velkou změnou jazyka byla ES6, která vyšla v roce 2015, takže se někdy označuje také jako ES2015 – ano, je to matoucí, já vím 😌
Protože po ES6 došlo jen k drobným změnám jazyka, všechny verze po ES6 se někdy označují také jako ESNext.
Překladače Javascriptu
Pamatujete si na problém, že ne všechny prohlížeče podporují nejnovější funkce ES10? Existuje řešení. Transpilery!
Babel je příkladem transpileru jazyka Javascript. Babel převede novější verzi Javascriptu na starší. Můžete tak používat nové módní funkce ES10 a nechat Babel transpilovat na široce podporovanou verzi ES5.
Rozdíl mezi NodeJS a Prohlížeči
NodeJS i Prohlížeče jsou interprety Javascriptu. V závislosti na tom, jakou verzi prohlížeče a jakou verzi Node máte, mohou podporovat stejnou verzi ECMAScriptu.
Node se však spouští přímo na počítači. To znamená, že k Node je přibalena řada knihoven, které v prohlížeči fungovat nebudou.
Například v NodeJS můžete vytvářet nové soubory. V prohlížeči by to představovalo velké bezpečnostní riziko, takže to není možné.
Proto programy NodeJS napsané ve stejné verzi ECMAScriptu stejně nepoběží v prohlížeči, který podporuje stejnou verzi.