Babeljs-babel-polyfill
BabelJS-バベルポリフィル
Babel Polyfillは、利用できない機能のWebブラウザーへのサポートを追加します。 Babelは、最新のecmaバージョンから必要なバージョンにコードをコンパイルします。 プリセットに従って構文を変更しますが、使用するオブジェクトまたはメソッドに対しては何もできません。 これらの機能には、下位互換性のためにポリフィルを使用する必要があります。
ポリフィルできる機能
以下は、古いブラウザで使用するときにポリフィルのサポートが必要な機能のリストです-
- 約束
- Map
- Set
- シンボル
- 弱マップ
- 弱点
- Array.from、Array.includes、Array.of、Array#find、Array.buffer、Array#findIndex
- Object.assign、Object.entries、Object.values
プロジェクトのセットアップを作成し、バベルポリフィルの動作も確認します。
コマンド
babelに必要なパッケージをインストールします。
babel 6のパッケージ
babel 7のパッケージ
これが最終的なpackage.jsonです-
コードをes5にコンパイルするため、es2015をプリセットに追加します。
ブラウザでコードをテストできるように、ライトサーブをインストールします-
package.jsonでコードをコンパイルするためにbabelコマンドを追加しましょう-
lite-serverを呼び出すbuildコマンドも追加しました。
Babel-polyfillはbabel-coreパッケージとともにインストールされます。 babel-polyfillは、以下に示すようにノードモジュールで利用可能になります-
約束にさらに取り組み、それとともにbabel-polyfillを使用します。
ES6-約束
コマンド
BabelJS-ES5
コンパイルで何も変更する必要はありません。 promiseのコードはそのまま転載されています。 ただし、promiseをサポートしていないブラウザーは、コードをes5にコンパイルしていてもエラーをスローします。
この問題を解決するには、コンパイルされた最終的なes5コードとともにポリフィルを追加する必要があります。 ブラウザーでコードを実行するには、ノードモジュールからbabel-polyfillファイルを取得し、次のようにpromiseを使用するlファイルに追加します-
インデックス
出力
indexlファイルでは、 node_modules のpolyfill.min.jsファイルに続けてpromise_es5.jsを使用しました-
注-ポリフィルファイルは、メインのjavascript呼び出しの前の開始時に使用する必要があります。
文字列のパディング
文字列パディングは、指定された長さに従って、左側から別の文字列を追加します。 文字列パディングの構文は次のとおりです-
構文
例
出力
バベル-ES5
コマンド
以下に示すように、jsはbabel-polyfillとともに使用する必要があります-
testl
Map、Set、WeakSet、WeakMap
このセクションでは、Map、Set、WeakSet、WeakMapについて学習します。
- Map は、キーと値のペアを持つオブジェクトです。
- Set もオブジェクトですが、一意の値を持ちます。
- WeakMapおよびWeakSet は、キーと値のペアを持つオブジェクトでもあります。
Map、Set、WeakMap、およびWeakSetは、ES6に追加された新機能です。 古いブラウザで使用されるようにトランスパイルするには、ポリフィルを使用する必要があります。 例に取り組み、ポリフィルを使用してコードをコンパイルします。
例
出力
コマンド
バベル-ES5
以下に示すように、jsはbabel-polyfillとともに使用する必要があります-
testl
出力
配列メソッド
配列では多くのプロパティとメソッドを使用できます。たとえば、array.from、array.includesなど。
これをよりよく理解するために、次の例での作業を検討してみましょう。
例
出力
コマンド
Babel-es5
配列で使用されるメソッドはそのまま印刷されます。 それらを古いブラウザで動作させるには、以下に示すように、開始時にポリフィルファイルを追加する必要があります-