ECMAScript 2015 (ES6) 以降
Node.js は最新の V8 を使用して構築されています。このエンジンの最新リリースを常に最新の状態に保つことで、JavaScript ECMA-262 仕様 の新機能をタイムリーに Node.js 開発者に提供し、パフォーマンスと安定性の向上を継続的に実現しています。
すべての ECMAScript 2015 (ES6) 機能は、shipping
、staged
、in progress
の3つのグループに分けられます。
- V8 が安定していると見なすすべての
shipping
機能は、Node.js ではデフォルトで有効
になり、いかなる
ランタイムフラグも必要ありません。 staged
機能は、V8 チームが安定していると見なしていない、ほぼ完成した機能であり、--harmony
ランタイムフラグが必要です。In progress
機能は、それぞれの harmony フラグによって個別に有効にできますが、テスト目的でない限り、これは強く推奨されません。注記: これらのフラグは V8 によって公開されており、非推奨通知なしに変更される可能性があります。
どの機能がどの Node.js バージョンでデフォルトで提供されますか?
node.green ウェブサイトは、kangax の compat-table に基づいて、さまざまなバージョンの Node.js でサポートされている ECMAScript 機能の優れた概要を提供しています。
進行中の機能は?
新しい機能は常に V8 エンジンに追加されています。一般的に、将来の Node.js リリースで提供されることが期待されますが、時期は不明です。
--v8-options
引数をgrepすることで、各Node.jsリリースで使用可能な進行中のすべての機能をリストすることができます。これらは不完全で、破損している可能性のあるV8の機能であるため、自己責任で使用してください。
node --v8-options | grep "in progress"
インフラストラクチャが --harmony フラグを利用するように設定されています。削除する必要がありますか?
Node.js での --harmony
フラグの現在の動作は、staged
機能のみを有効にすることです。結局のところ、これは --es_staging
の同義語です。上記のように、これらはまだ安定していると見なされていない完成した機能です。特に本番環境では安全にプレイしたい場合は、V8 でデフォルトで提供されるまで、そして結果として Node.js で提供されるまで、このランタイムフラグを削除することを検討してください。これを有効にしたままにすると、V8 が標準にさらに厳密に従うようにセマンティクスを変更した場合、今後の Node.js のアップグレードによってコードが壊れる可能性があります。
特定バージョンのNode.jsに同梱されているV8のバージョンを確認するには?
Node.jsは、process
グローバルオブジェクトを通じて、特定のバイナリに同梱されているすべての依存関係とそのバージョンを一覧表示する簡単な方法を提供しています。V8エンジンの場合、ターミナルで以下を入力してそのバージョンを取得します。
node -p process.versions.v8