web-dev-qa-db-ja.com

ライブラリを開発していない場合に、babel-runtimeとbabel-polyfillを使用することに実際的な違いはありますか? (例:Webアプリケーション)

本当に、それはすべてタイトルにあります。

Babelのドキュメントでは、 babel-runtimeについて説明しているページ に次の行があります。

このトランスフォーマーのもう1つの目的は、コードのサンドボックス環境を作成することです。 Promise、Set、Mapなどの組み込みはcore-jsにエイリアスされているため、グローバルに汚染する必要なしにシームレスに使用できます polyfill

polyfill はまさにそれであり、いくつかの不足しているものをシムする別のJavaScriptファイルが含まれています。

ビルドツール(webpack)でbabel-runtimeを使用する場合とポリフィルをテストした場合、babel-runtimeを使用するとファイルがわずかに小さくなります。

私はライブラリやプラグインを開発しているのではなく、Webアプリケーションだけを開発しており、グローバルスコープが汚染されていることも気にしません。これを知っていると、最終的なファイルサイズがわずかに小さくなる以外に、ポリフィルよりもランタイムを使用することに他の実用的な利点やポイントはありますか?

24

グローバルスコープの汚染を気にしない場合は、ポリフィルの方が適しています。ランタイムは[0, 1, 2].includes(1)などのインスタンスメソッドでは機能しませんが、ポリフィルでは機能します。

2つの主な違いは、ポリフィルがグローバルスコープを汚染し、インスタンスメソッドで機能するのに対し、ランタイムはグローバルスコープを汚染せず、インスタンスメソッドで機能しないことです。

ポリフィルでは、コードに2つの別々のバージョンを含めることもできません。これは、コードのどこかに2つの別々のポリフィルが必要/インポートされている場合にのみ問題になります。

31
Mark Rousskov