私は自分のブラウザのコンソールでECMAScript 6コードを実行する方法を探していますが、ほとんどのブラウザは私が探している機能をサポートしていません。たとえば、Firefoxは矢印機能をサポートする唯一のブラウザです。
Chromeでこれらの機能を実行できる方法(拡張子、ユーザースクリプトなど)はありますか?
Chromeでは、ほとんどのES6機能が「実験的JavaScript機能」と呼ばれるフラグの背後に隠されています。 chrome://flags/#enable-javascript-harmony
にアクセスしてこのフラグを有効にし、Chromeを再起動すると 多くの新機能 が表示されます。
矢印機能は V8/Chromeではまだ実装されていません なので、このフラグは矢印機能を「ロック解除」しません。
矢印関数は構文が変更されているため、JavaScriptの解析方法を変更せずにこの構文をサポートすることはできません。 ES6での開発が大好きな場合は、ES6コードを作成し、ES6からES5へのコンパイラを使用して、既存の(最新の)すべてのブラウザと互換性のあるJavaScriptコードを生成できます。
たとえば、 https://github.com/google/traceur-compiler を参照してください。これを書いている時点で、 ES6のすべての新しい構文機能 をサポートしています。この答えの冒頭で述べたフラグと一緒に、あなたは非常に望ましい結果に近づくでしょう。
ES6構文をコンソールから直接実行したい場合は、コンソールのJavaScriptエバリュエーターを上書きしてみることができます(コードを実行する前にTraceurプリプロセッサーが実行されるなど)。あなたがこれをしているのなら、開発者ツールの振る舞いを変更する方法を学ぶために この答え を見てください。
Babel はES6を試してみるための素晴らしいトランスピラーです。 Webサイトの「試してみる」セクションのブラウザでES6を実行できます。 jsfiddleと同様に機能します。
例えば矢印
let add = (x,y) => x + y;
let result = add(1,1);
console.log(result);
結果を表示します2
。
Babelは "transpiles"、つまりES6を現在のブラウザテクノロジで実行可能なES5 JavaScriptに変換します。 Babelはnpm install -g babel
経由でインストールできます。インストールしたら、上の矢印の例をファイルに保存できます。ファイルを "ES6.js"と呼ぶとしましょう。 nodeがインストールされていると仮定して、コマンドラインで出力をnodeにパイプします。
babel ES6.js | node
そして、あなたは出力2
を見るでしょう。次のコマンドで翻訳ファイルを永久保存することができます。
babel ES6.js --out-file output.js
output.js "transpiled":
"use strict";
var add = function (x, y) {
return x + y;
};
var result = add(1, 2);
console.log(result);
もちろん、どのブラウザでも実行できます。
ES6は動きの速いターゲットです。 TraceurやBabelなどのtranspilerでサポートされている機能やブラウザのサポートについては 互換性表 を参照してください。チャートを拡張して、互換性を検証するためのテストを確認することもできます。
ブラウザでEdge ES6の血抜きを試すには、 Firefox夜間ビルド または Chromeリリースチャンネル を試してください。
新しい機能がすべての視聴者に確実に機能するようにするには、transpilerを使用します。 transpilerはあなたのコードをすべてのブラウザで互換性のあるコードに変換することによって今日の最新のECMAScript機能を使うことを可能にします。以下は良いtranspilerです。
Babel ( Gulp用 、 Webpack用 、 Grunt用 、 他のフレームワークと言語用 =)
TypeScriptを使っているのであれば、TypeScriptは コードを変換する になります。
transpilerを設定したくない、またはまだtranspilerでサポートされていない機能を使いたいですか?
ブラウザで実験的なECMAScript機能を有効にするには、 chrome:// flags /#enable-javascript-harmony に進み、JavaScript Harmonyフラグを有効にします。一部の機能では、フラグを有効にして Chrome Canary を使用する必要があります。
この質問では、特に矢印関数の使用について言及しました。矢印機能は、IEとOpera Miniを除くすべてのブラウザでネイティブにサポートされるようになりました。 caniuse を参照してください。
あなたが矢印機能で遊んでみたければ、それは少し困難でした。以下の履歴は、この機能を使用するのに異なる時点で何が必要かを示しています。
1)最初は、矢印関数は
chrome://flags/#enable-javascript-harmony
フラグが有効になっているChrome Canaryでのみ機能しました。この機能は少なくともバージョン39で 部分的に実装された であるように見えます。2)それから、矢印はJavaScript Harmonyフラグの後ろのGoogle Chromeで利用可能にされるところで機能します。
3)最後に、Google Chrome 45では、デフォルトで矢印が有効になっています。
他の新しいECMAScript機能でも同様のパターンが発生することが予想されます。
厳密にuse strictモードを使用するだけで(不要ですが、これは素晴らしい方法です)、ChromeはコードをES6として実行できます。
(function(){
'use strict';
//your ES6 code...
})();
ここでの例は... http://jsbin.com/tawubotama/edit?html,js,console,outputuse stricを削除してみてくださいモード行を再試行してください。コンソールのエラーがログに記録されます。
2015年11月現在、 Firefox と Edge がES6の主流となっています。Chromeにない機能を試してみたい場合は、それらを使用してください。 Edgeは class/subclass を持ち、Firefoxは Proxy を持ちます。それらの間には、ほとんどすべてのものがあります ES6の機能 。
ChromeコンソールでES6を使用する必要がある場合は、簡単で実証済みの方法が1つあります。
我慢して。
ブラウザはES6を採用しています - Safariでも、ほとんどのHTML 5規格に力を入れています。 Googleに時間を与えてください。そうすれば、彼らはES6の機能を一つずつ実装するでしょう。たとえば、矢印機能は、生産チャネルで、フラグなしで利用可能になりました。
拡張を期待しないでください。 ES6をES5に1行ずつ変換することはできませんので、 Babel で extend consoleを使用することはできません。
Experiment jsフラグがあるのは事実ですが、それは正当な理由で存在します。 V8にはProxyがありますが、古い(非標準)構文であり、 セキュリティー上の問題 を持っています。そのデストラクタリングも不完全です。場合によってはうまくいくこともあれば、うまくいかないこともあります。
ES6だけをプレイしたい場合は、Edge/Firefoxでプレイしてください。どちらもほぼすべてのBabelをカバーし、コンソールとデバッガを持ち、そしてBabelが提供できない機能を持っています。