Vyhledávání na webu

javascript - ECMAScript 6 nepracuje, i když je povolen experimentální JS


Mám nejnovější verzi Chrome (45 a také Chrome Canary, která je ve verzi 47), obě s povoleným experimentálním JavaScriptovým flagem. Chci používat ECMAScript 6, ale nefunguje to. Nevím proč. Existuje nějaký trik nebo další flag, který musí být také povolen?

Každé rezervované slovo ECMAScript 6 (jako import, class nebo cokoli jiného) vyvolá v Chrome 45 „Nezachycená SyntaxError: Neočekávané rezervované slovo“ a v Chrome Canary „Nezachycená SyntaxError: Neočekávaný token import“.

Tuto otázku jsem položil před několika měsíci, aniž bych dostal odpověď, jen „možnou duplicitu“ otázky Použití ECMAScript 6, ale to můj problém neřeší.

Chci používat moduly, protože mi více vyhovují moduly ECMAScript než používání require z CommonJS. A taky se mi líbí syntaktický cukr u tříd — kód vypadá lépe.

Odpověď č. 1

Moduly zatím nejsou nativně podporovány v žádném prohlížeči. Budete muset použít transpiler, například Traceur nebo Babel. Podívejte se na jednu z následujících možností, která vám pomůže začít:

  • Vyberte si dnes moduly ES6!
  • ES6 do hloubky: Používání ES6 dnes s Babel a Broccoli
  • Psaní klientského ES6 s webpackem

Co se týče tříd, můžete je možná použít nativně, aniž byste museli používat transpiler. Zde můžete zkontrolovat tabulku kompatibility a zjistit, které prohlížeče dnes třídy nativně podporují:

https://kangax.github.io/compat-table/es6/

V tuto chvíli můžete vidět, že většina prohlížečů ještě nativně třídy nepodporuje. Pokud však používáte Babel nebo Traceur, nemělo by to být problém.

Odpověď č. 2

Přidejte type="module" k značce script. To by mělo vyřešit váš problém.