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.