javascript - ECMAScript 6 fungerar inte trots att experimentell JS är aktiverad
Jag har den senaste versionen av Chrome (45 och även Chrome Canary som är i version 47), båda med det experimentella JavaScript-flaggan aktiverad. Jag vill använda ECMAScript 6, men det fungerar inte. Jag vet inte varför. Finns det någon trick eller någon annan flagga som också måste aktiveras?
Varje reserverat ord i ECMAScript 6 (som import, class eller vad som helst) orsakar ett „Uncaught SyntaxError: Unexpected reserved word“ i Chrome 45 och ett „Uncaught SyntaxError: Unexpected token import“ fel i Chrome Canary.
Jag frågade detta för några månader sedan utan att få något svar förutom en "möjlig duplicering" av Använda ECMAScript 6, men det löser inte mitt problem.
Jag vill använda moduler, eftersom jag gillar ECMAScript-moduler mer än att använda require från CommonJS. Och jag tycker också om syntax-sockret med klasser — koden ser bättre ut.
Svar #1
Moduler stöds ännu inte inbyggt i någon webbläsare. Du kommer att behöva använda en transpiler som Traceur eller Babel. Ta en titt på någon av följande för att hjälpa dig komma igång:
- Välj ES6-moduler idag!
- ES6 på djupet: Använda ES6 idag med Babel och Broccoli
- Skriva klient-sida ES6 med webpack
När det gäller klasser kan du kanske använda dessa direkt utan att behöva gå igenom en transpiler. Du kan kolla kompatibilitetstabellen här för att se vilka webbläsare som stöder klasser direkt idag:
https://kangax.github.io/compat-table/es6/
Just nu kan du se att majoriteten av webbläsare ännu inte stöder klasser inbyggt. Men om du använder Babel eller Traceur borde det inte vara ett problem.
Svar #2
Lägg till type="module" i script-taggen. Det borde lösa ditt problem.