javascript - ECMAScript 6 fungerer ikke selv om eksperimentell JS er aktivert


Jeg har den nyeste versjonen av Chrome (45 og også Chrome Canary som er i versjon 47), begge med den eksperimentelle JavaScript-flagget aktivert. Jeg vil bruke ECMAScript 6, men det fungerer ikke. Jeg vet ikke hvorfor. Finnes det noen trikser eller andre flagg som også må være aktivert?

Hvert reserverte ord i ECMAScript 6 (som import, class eller hva som helst) gir en “Uncaught SyntaxError: Unexpected reserved word ” i Chrome 45 og en “Uncaught SyntaxError: Unexpected token import ” feil i Chrome Canary.

Jeg spurte om dette for noen måneder siden uten å få noe svar, bare en «mulig duplikat» av Bruke ECMAScript 6, men det løser ikke problemet mitt.

Jeg vil bruke moduler, siden jeg liker ECMAScript-modulene mer enn å bruke require fra CommonJS. Og jeg liker også syntaks-sukkeret til klasser — koden ser bedre ut.

Svar #1

Moduler støttes fortsatt ikke naturlig i noen nettleser. Du må bruke en transpiler som Traceur eller Babel. Ta en titt på en av følgende for å komme i gang:

  • Velg ES6-moduler i dag!
  • ES6 I Dybdde: Bruke ES6 i dag med Babel og Broccoli
  • Skrive klient-side ES6 med webpack

Når det gjelder klasser, kan det hende du kan bruke disse direkte uten å måtte gå gjennom en transpiler. Du kan sjekke kompatibilitetstabellen her for å se hvilke nettlesere som i dag støtter klasser direkte:

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

Per nå kan du se at de fleste nettlesere ennå ikke støtter klasser nativt. Hvis du derimot bruker Babel eller Traceur, bør ikke det være et problem.

Svar #2

Legg til type="module" i script-taggen. Det bør løse problemet ditt.