javascript - Deneysel JS etkin olmasına rağmen ECMAScript 6 çalışmıyor


En son Chrome sürümüne sahibim (45 ve ayrıca 47 sürümünde olan Chrome Canary), ikisi de Deneysel JavaScript bayrağı etkinleştirilmiş. ECMAScript 6 kullanmak istiyorum, ama çalışmıyor. Neden bilmiyorum. Etkinleştirilmesi gereken başka bir hile ya da bayrak var mı?

ECMAScript 6'nın her ayrılmış kelimesi (örneğin import, class veya herhangi bir şey) Chrome 45'te “Yakalanmamış SyntaxError: Beklenmeyen ayrılmış kelime” hatası ve Chrome Canary'de “Yakalanmamış SyntaxError: Beklenmeyen token import” hatası verir.

Bunu birkaç ay önce cevap almadan sordum, ancak 'Olası tekrar' olarak ECMAScript 6 Kullanımı ile işaretlendi, ama bu benim sorunumı çözmüyor.

Modülleri kullanmak istiyorum, çünkü CommonJS'ten require kullanmaktan ziyade ECMAScript modüllerini daha çok seviyorum. Ayrıca sınıfların sözdizimi şekerini de seviyorum — kod daha iyi görünüyor.

Cevap #1

Modüller henüz hiçbir tarayıcıda doğal olarak desteklenmemektedir. Traceur veya Babel gibi bir transpiler kullanmanız gerekecek. Başlamak için aşağıdakilerden birine göz atın:

  • Bugün ES6 modüllerini seçin!
  • ES6 Derinlemesine: ES6'yı Bugün Babel ve Broccoli ile Kullanmak
  • Webpack ile istemci tarafı ES6 yazmak

Sınıflara gelince, bir transpiler kullanmadan bunları yerel olarak kullanabiliyor olabilirsiniz. Bugün hangi tarayıcıların sınıfları yerel olarak desteklediğini görmek için uyumluluk tablosunu burada kontrol edebilirsiniz:

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

Şu anda, çoğu tarayıcının sınıfları henüz yerel olarak desteklemediğini görebilirsiniz. Ancak, Babel veya Traceur kullanıyorsanız, bu bir sorun olmamalıdır.

Cevap #2

type="module" özelliğini script etiketine ekleyin. Bu, sorununuzu çözmelidir.