Babeljs-quick-guide
BabelJS-概要
BabelJSを選ぶ理由
JavaScriptは、ブラウザが理解できる言語です。 Chrome、Firefox、Internet Explorer、Microsoft Edge、Opera、UCブラウザーなど、さまざまなブラウザーを使用してアプリケーションを実行します。 ECMAスクリプトはJavaScript言語仕様です。 ECMA Script 2015 ES5は、すべての新旧ブラウザーで正常に動作する安定したバージョンです。
ES5の後、ES6、ES7、およびES8ができました。 すべてのブラウザで完全にサポートされていない多くの新機能を備えたES6がリリースされました。 ES7、ES8、およびESNext(ECMAスクリプトの次のバージョン)にも同じことが当てはまります。 現在、すべてのブラウザがリリースされたすべてのESバージョンと互換性を持つことが可能になるかどうかは不明です。
ES6またはES7またはES8の機能を使用してコードを記述する場合、新しい変更のサポートが不足しているため、一部の古いブラウザーでは破損する傾向があります。 したがって、コードでECMAスクリプトの新機能を使用し、使用可能なすべてのブラウザーで実行する場合、ES5で最終コードをコンパイルするツールが必要です。
次の表に、ES6、ES7、およびES8で使用可能な機能を示します-
Features | ECMA Script version |
---|---|
Let + Const | ES6 |
Arrow Functions | ES6 |
Classes | ES6 |
Promises | ES6 |
Generators | ES6 |
Iterators | ES6 |
Modules | ES6 |
Destructuring | ES6 |
Template Literals | ES6 |
Enhanced Object | ES6 |
Default, Rest & Spread Properties | ES6 |
Async - Await | ES7 |
Exponentiation Operator | ES7 |
Array.prototype.includes() | ES7 |
String Padding | ES8 |
BabelJSは、次の2つの部分を管理します-
- トランスパイリング
- ポリフィリング
Babel-Transpilerとは何ですか?
Babel-transpilerは、最新のJavaScriptの構文をフォームに変換します。これは、古いブラウザーでも簡単に理解できます。 たとえば、矢印function、const、letクラスはfunction、varなどに変換されます。 ここで、構文、つまり矢印関数は、両方の場合で機能を同じに保ちながら通常の関数に変換されます。
Babel-polyfillとは何ですか?
Promise、Maps、Includeなどの新しい機能がJavaScriptに追加されています。 この機能はアレイで使用できます。同様に、使用してbabelを使用してトランスパイルしても変換されません。 新しい機能がメソッドまたはオブジェクトである場合、Babel-polyfillとトランスパイルを使用して、古いブラウザーで機能させる必要があります。
JavaScriptで利用可能なECMAスクリプト機能のリストを次に示します。これらの機能は、変換およびポリフィルできます-
- クラス
- デコレータ
- Const
- モジュール
- 破壊する
- デフォルトのパラメーター
- 計算されたプロパティ名
- オブジェクトのレスト/スプレッド
- 非同期関数
- 矢印関数
- 残りのパラメーター
- スプレッド
- テンプレートリテラル
ポリフィル可能なECMAスクリプト機能-
- 約束
- Map
- Set
- シンボル
- 弱マップ
- 弱点
- 含む
- Array.from、Array.of、Array#find、Array.buffer、Array#findIndex
- Object.assign、Object.entries、Object.values
BabelJSの機能
このセクションでは、BabelJSのさまざまな機能について学習します。 以下はBabelJSの最も重要なコア機能です-
Babel-Plugins
プラグインとプリセットは、Babelがコードをトランスパイルするための設定の詳細です。 Babelは、コードが実行される環境がわかっている場合、個別に使用できる多数のプラグインをサポートしています。
バベルプリセット
Babelプリセットはプラグインのセットです。つまり、Babelに特定のモードでトランスパイルするように指示するbabel-transpilerの構成詳細です。 コードを変換する環境を持つプリセットを使用する必要があります。 たとえば、_es2015_プリセットはコードを_es5_に変換します。
バベルポリフィル
メソッドやオブジェクトのようないくつかの機能がありますが、これらは変換できません。 このような場合、babel-polyfillを使用して、任意のブラウザーで機能の使用を促進できます。 約束の例を考えてみましょう。この機能が古いブラウザで機能するには、ポリフィルを使用する必要があります。
バベルポリフィル
Babel-cliには、コマンドラインでコードを簡単にコンパイルできる一連のコマンドが付属しています。 また、コマンドとともに使用するプラグインやプリセットなどの機能も備えており、一度にコードを簡単に変換できます。
BabelJSを使用する利点
このセクションでは、BabelJSの使用に関連するさまざまな利点について学習します-
- BabelJSは、JavaScriptに新しく追加されたすべての機能との下位互換性を提供し、任意のブラウザーで使用できます。
- BabelJSには、ES6、ES7、ESNextなど、JavaScriptの次のバージョンを取り込むためにトランスパイルする機能があります。
- BabelJSは、gulp、webpack、flow、react、typescriptなどとともに使用できます。 それを非常に強力にし、開発者の生活を楽にする大きなプロジェクトで使用することができます。
- BabelJSは、react JSX構文と連携して動作し、JSX形式でコンパイルできます。
- BabelJSはプラグイン、ポリフィル、babel-cliをサポートしており、大きなプロジェクトでの作業が簡単になります。
BabelJSを使用することの欠点
このセクションでは、BabelJSを使用することのさまざまな欠点について学習します-
- BabelJSコードはトランスパイリング中に構文を変更するため、本番環境でリリースされるとコードが理解しにくくなります。
- 変換されたコードは、元のコードと比較するとサイズが大きくなります。
- すべてのES6/7/8または今後の新機能をトランスコンパイルできるわけではなく、古いブラウザーで動作するようにポリフィルを使用する必要があります。
以下は、babeljs [[1]]
BabelJS-環境設定
このセクションでは、BabelJSの環境を設定する方法を学びます。
BabelJSを使用するには、次のセットアップが必要です-
- NodeJS
- Npm
- Babel-CLI
- バベルプリセット
- コードを書くためのIDE
NodeJS
nodejsがシステムにインストールされているかどうかを確認するには、ターミナルで node –v と入力します。 これは、現在システムにインストールされているnodejsのバージョンを確認するのに役立ちます。
何も印刷されない場合は、システムにnodejsをインストールします。 nodejsをインストールするには、nodejsのホームページhttps://nodejs.org/en/download/にアクセスし、OSに基づいてパッケージをインストールします。
次のスクリーンショットは、nodejsのダウンロードページを示しています-
OSに基づいて、必要なパッケージをインストールします。 nodejsがインストールされると、npmも一緒にインストールされます。 npmがインストールされているかどうかを確認するには、ターミナルで npm –v と入力します。 npmのバージョンが表示されます。
BabelJS-CLI
Babelには、コマンドラインインターフェイスが組み込まれており、コードのコンパイルに使用できます。
作業するディレクトリを作成します。 ここで、_babelproject_というディレクトリを作成しました。 nodejsを使用してプロジェクトの詳細を作成しましょう。
以下に示すように、_npm init_を使用してプロジェクトを作成しました-
作成したプロジェクト構造は次のとおりです。
次に、Babelを使用するには、以下に示すようにBabel cli、Babelプリセット、Babelコアをインストールする必要があります-
バベルクリ
次のコマンドを実行してbabel-cliをインストールします-
バベルプリセット
次のコマンドを実行してbabel-presetをインストールします-
バベルコア
次のコマンドを実行してbabel-coreをインストールします-
インストール後、ここにpackage.jsonで利用可能な詳細があります-
プロジェクトのローカルにbabelプラグインをインストールしました。 これは、プロジェクトの要件および異なるバージョンのbabeljsに基づいて、プロジェクトでbabelを異なる方法で使用できるようにするためです。 Package.jsonは、使用されるbabeljsのバージョンの詳細を提供します。
私たちのプロジェクトでbabelを使用するには、次のようにpackage.jsonで同じものを指定する必要があります-
Babelは主にJavaScriptコードをコンパイルするために使用されますが、これには後方互換性があります。 次に、ES6→ ES5またはES7→ ES5、ES7→ ES6などでコードを記述します。
実行中にBabelに指示を提供するには、ルートフォルダーに.babelrcというファイルを作成する必要があります。 以下に示すように、プリセットの詳細を含むjsonオブジェクトが含まれています-
JavaScriptファイルindex.jsを作成し、Babelを使用してes2015にコンパイルします。 その前に、次のようにes2015プリセットをインストールする必要があります-
index.jsでは、es6に追加された新しい機能であるarrow関数を使用して関数を作成しました。 Babelを使用して、es5にコードをコンパイルします。
es2015に実行するには、次のコマンドが使用されます-
出力
上記のように、es5のindex.jsコードが表示されます。
次のようにコマンドを実行することにより、ファイルに出力を保存できます-
出力
ここに作成したファイル、index_es5.jsがあります-
BabelJS-ES6コード実行
矢印関数、クラス、プロミス、ジェネレーター、非同期関数などの多くの機能を見てきました。 ES6、ES7、およびES8に追加されました。 新しく追加された機能のいずれかが古いブラウザーで使用されると、エラーがスローされます。 BabelJSは、古いブラウザーとの下位互換性があるコードのコンパイルを支援します。 ES5は問題なく古いブラウザーで完全に正常に動作することがわかりました。 したがって、プロジェクト環境の詳細を考慮すると、古いブラウザーで実行する必要がある場合は、プロジェクトの新しい機能を使用し、babeljsを使用してコードをES5にコンパイルし、問題なくブラウザーを使用できます。
これを理解するために、次の例を考えてみましょう。
例
index.jsファイル
出力
上記のHTMLをChromeブラウザで実行すると、次の出力が得られます-
FirefoxでHTMLを実行すると、次の出力が生成されます-
そして、同じHTMLがInternet Explorerで実行されると、次の構文エラーが生成されます-
ES6 Arrow関数を使用しました。上記のように、同じことがすべてのブラウザで機能するわけではありません。 これを機能させるために、コードをES5にコンパイルしてすべてのブラウザーで使用するBabelJSがあります。
babeljsを使用してjsファイルをes5にコンパイルし、ブラウザーで再度チェックします。
HTMLファイルでは、以下に示すようにindex_new.jsを使用します-
index_new.js
クロム出力
Firefoxブラウザー出力
IEブラウザ出力
BabelJS-Babel 6を使用したプロジェクトのセットアップ
この章では、プロジェクト内でbabeljsを使用する方法について説明します。 nodejsを使用してプロジェクトを作成し、httpローカルサーバーを使用してプロジェクトをテストします。
プロジェクト設定の作成
このセクションでは、プロジェクトのセットアップを作成する方法を学びます。
新しいディレクトリを作成し、次のコマンドを実行してプロジェクトを作成します-
出力
実行すると、上記のコマンドは次の出力を生成します-
作成されるpackage.jsonは次のとおりです-
babeljsの使用を開始するために必要なパッケージをインストールします。 次のコマンドを実行して、_babel-cli、babel-core、babel-preset-es2015_をインストールします。
出力
実行すると、上記のコマンドは次の出力を生成します-
Package.jsonは次のように更新されます-
jsファイルをテストするには、httpサーバーが必要です。 次のコマンドを実行して、httpサーバーをインストールします-
package.jsonに次の詳細を追加しました-
スクリプトでは、Babelは_src_フォルダーからscripts.jsをトランスコンパイルし、_scripts.bundle.js_という名前で_dev_フォルダーに保存します。 package.jsonに必要なコードをコンパイルするための完全なコマンドを追加しました。 さらに、_lite_server_を起動して変更をテストする_build_が追加されます。
src/scripts.jsには次のようなJavaScriptがあります-
次のように、indexlで変換されたスクリプトを呼び出しました-
babelを呼び出してコードをコンパイルする次のコマンドを実行する必要があります。 コマンドはpackage.jsonからBabelを呼び出します-
scripts.bundle.jsは、devフォルダに作成された新しいjsファイルです-
今、私たちは次のコマンドを実行してサーバーを起動しましょう-
コマンドを実行すると、ブラウザでURLが開きます-
出力
上記のコマンドは、次の出力を生成します-
BabelJS-Babel 7を使用したプロジェクトのセットアップ
Babel 7の最新バージョンは、既存のパッケージに変更を加えてリリースされました。 インストール部分は、Babel 6の場合と同じままです。 Babel 7の唯一の違いは、すべてのパッケージを @ babel/ でインストールする必要があることです。たとえば、@ babel/core、@ babel/preset-env、@ babel/cli、@ babel/polyfillなどです。
以下は、babel 7を使用して作成されたプロジェクトのセットアップです。
コマンド
プロジェクトのセットアップを開始するには、次のコマンドを実行します-
以下のパッケージをインストールします
ここに作成されたpackage.jsonがあります-
ルートフォルダに .babelrc ファイルを作成します-
src/main.js
トランスパイルするコマンド
main_es5.js
Babel 7の動作は、Babel 6と同じままです。 唯一の違いは、@ babelを使用したpacakgeインストールです。
babel 7には非推奨のプリセットがいくつかあります。 リストは次のとおりです-
- ES20xxプリセット
- babel-preset-env
- babel-preset-latest
- Babelのステージプリセット
また、パッケージから年が削除されました- @ babel/plugin-transform-es2015-classes は @ babel/plugin-transform-classes になりました
typescriptを使用して、typescriptプリセットとbabel 7を使用してEs2015 JavaScriptに変換するもう1つの例を見ることができます。
typescriptを使用するには、typescriptパッケージを次のようにインストールする必要があります-
test.ts
.babelrc
コマンド
test.js
BabelJS-ES6の機能をES5にトランスパイル
この章では、ES6に追加された機能について説明します。 BabelJSを使用して機能をES5にコンパイルする方法も学習します。
以下は、この章で説明するさまざまなES6機能です-
- Let + Const
- 矢印関数
- クラス
- 約束
- ジェネレータ
- 破壊
- イテレータ
- テンプレートリテラル
- 拡張オブジェクト
- デフォルト、レスト、スプレッドのプロパティ
Let + Const
JavaScriptでブロックスコープのローカル変数を宣言しましょう。 letの使用方法を理解するには、次の例を検討してください。
例
出力
最初のコンソールが2を出力するのは、 a が let を使用して再度宣言され、 if ブロックでのみ使用可能になるためです。 letを使用して宣言された変数は、宣言されたブロック内でのみ使用できます。 letを使用して変数aを2回宣言しましたが、aの値は上書きされません。
これは、varキーワードとletキーワードの違いです。 varを使用して変数を宣言すると、変数は関数のスコープ内で使用可能になります。宣言された場合、グローバル変数のように機能します。
letで変数が宣言されている場合、変数はブロックスコープ内で使用できます。 ifステートメント内で宣言された場合、ifブロック内でのみ使用可能になります。 スイッチ、forループなどにも同じことが当てはまります。
ES5でbabeljsを使用したコード変換を確認します。
次のコマンドを実行してコードを変換しましょう-
letキーワードのes6からes5への出力は次のとおりです-
ES6を使用してみましょう
babelを使用してES5に転送
ES5コードが表示されている場合、letキーワードは var キーワードに置き換えられています。 また、ifブロック内の変数の名前は _a に変更され、 let キーワードで宣言されたときと同じ効果が得られます。
Const
このセクションでは、ES6およびES5でのconstキーワードの機能について学習します。 Constキーワードもスコープ内で使用できます。外の場合はエラーがスローされます。 const宣言された変数の値は、一度割り当てられると変更できません。 constキーワードの使用方法を理解するために、次の例を考えてみましょう。
例
出力
上記の出力は、ifブロック内で定数が定義され、ifブロック内で使用できるため、エラーをスローします。
BabelJSを使用したES5への変換について理解します。
ES6
コマンド
BabelJSを使用してES6にトランスパイリング
ES5の場合、constキーワードは上記のようにvarキーワードに置き換えられます。
矢印関数
矢印関数は、変数式と比較して構文が短くなっています。 また、ファットアロー関数またはラムダ関数とも呼ばれます。 関数には独自のthisプロパティはありません。 この関数では、キーワード関数は省略されています。
例
出力
BabelJSを使用して、上記のコードをES5に変換します。
ES6-矢印機能
コマンド
BabelJS-ES5
Babelを使用すると、矢印関数は以下に示すように変数式関数に変換されます。
クラス
ES6には新しいクラス機能が付属しています。 クラスは、ES5で利用可能なプロトタイプベースの継承に似ています。classキーワードは、クラスを定義するために使用されます。 クラスは特別な関数に似ており、関数式のような類似点があります。 クラス内で呼び出されるコンストラクターがあります。
例
出力
ES6-クラス
コマンド
BabelJS-ES5
ES5と同じクラスの機能を動作させるためにbabeljsを使用して追加のコードが追加されています。BabelJsは、ES6での機能と同じように機能するようにします。
約束
JavaScript Promiseは、コード内の非同期リクエストを管理するために使用されます。
依存関係のある非同期リクエストから複数のコールバックを管理するため、作業が楽になり、コードがきれいに保たれます。 Promiseは、コールバック関数を使用するより良い方法を提供します。 約束はES6の一部です。 デフォルトでは、プロミスを作成するとき、プロミスの状態は保留中です。
約束には3つの状態があります-
- 保留中(初期状態)
- 解決済み(正常に完了)
- 拒否(失敗)
- new Promise()*は、promiseの構築に使用されます。 Promiseコンストラクターには、コールバック関数である引数が1つあります。 コールバック関数には、解決と拒否の2つの引数があります。
どちらも内部関数です。 記述する非同期コード、つまりAjax呼び出し、画像の読み込み、タイミング関数は、コールバック関数に入ります。
コールバック関数で実行されたタスクが成功した場合、解決関数が呼び出されます。それ以外の場合、エラーの詳細とともに拒否関数が呼び出されます。
次のコード行は、promise構造体の呼び出しを示しています-
ES6 Promiseの例
出力
ES6-約束
コマンド
BabelJS-ES5
約束の場合、コードをトランスパイルしても変更されません。 古いブラウザで動作するためにはbabel-polyfillを使用する必要があります。babel-polyfillの詳細はbabel-poyfillの章で説明されています。
ジェネレータ
ジェネレーター関数は、通常の*関数*と同じです。 関数には、関数への*と関数内で使用される_yield_キーワードを含む特別な構文function *があります。 これは、必要に応じて機能を一時停止または開始するためのものです。 実行が開始されると、その間に通常の機能を停止することはできません。 returnステートメントに遭遇すると、全機能を実行するか停止します。 ここではジェネレータの実行方法が異なります。yieldキーワードを使用して関数を停止し、必要なときにジェネレータを再度呼び出すことで関数を開始できます。
例
出力
ES6-ジェネレーター
コマンド
BabelJS-ES5
イテレータ
JavaScriptのイテレーターは、値を持つJavaScriptオブジェクトを返します。 オブジェクトには、doneというフラグがあり、true/false値を持っています。 反復子の最後でない場合はfalseを返します。 例を考えて、配列でのイテレータの動作を見てみましょう。
例
上記の例では、数値の配列を使用し、 Symbol.iterator をインデックスとして使用して配列の関数を呼び出しました。
配列でnext()を使用して取得する出力は次のとおりです-
出力は値を持つオブジェクトを提供し、プロパティとして行われます。 すべての* next()メソッド呼び出しは、配列から次の値を提供し、falseとして実行されます。 doneの値は、配列の要素が完了したときにのみ真になります。 これを配列の反復処理に使用できます。 次のように使用されている *for-of ループのような利用可能なオプションがあります-
例
出力
- for-ofループ*がキーを使用する場合、上記のように配列値の詳細を提供します。 両方の組み合わせを確認し、babeljsがそれらをes5にトランスコンパイルする方法を確認します。
例
コマンド
出力
es5に for-of ループが追加されました。 ただし、iterator.nextはそのまま残されます。 古いブラウザで動作させるには、 babel-polyfill を使用する必要があります。 Babel-polyfillはbabelとともにインストールされ、以下に示すようにnode_modulesから同じものを使用できます-
例
出力
破壊
分解プロパティは、配列、オブジェクトから値を展開するJavaScript式のように動作します。
次の例では、構文を分解する仕組みを説明します。
例
出力
上記のコード行は、配列の右側から左側の変数に値がどのように割り当てられるかを示しています。 … rem を含む変数は、配列から残りのすべての値を取得します。
また、以下に示すように、条件演算子を使用して左側のオブジェクトから値を割り当てることができます-
babeljsを使用して同じものをES5に変換しましょう-
コマンド
destruct_es5.js
テンプレートリテラル
テンプレートリテラルは、その中の式を許可する文字列リテラルです。 一重引用符または二重引用符の代わりにbacktick( ``)を使用します。 文字列内で式を言うとき、変数を使用したり、関数を呼び出したりできることを意味します。 文字列の中。
例
出力
ES6-テンプレートリテラル
コマンド
BabelJS-ES5
拡張されたオブジェクトリテラル
es6では、オブジェクトリテラルに追加された新しい機能は非常に便利で便利です。 ES5およびES6のオブジェクトリテラルのいくつかの例を見ていきます-
例
上記のコードが表示される場合、ES5とES6のオブジェクトは異なります。 ES6では、変数名がキーと同じ場合、キー値を指定する必要はありません。
babelを使用したES5へのコンパイルを見てみましょう。
ES6拡張オブジェクトリテラル
コマンド
BabelJS-ES5
デフォルト、レスト、スプレッドのプロパティ
このセクションでは、デフォルト、レスト、スプレッドのプロパティについて説明します。
デフォルト
ES6では、次のように関数paramsにデフォルトのパラメータを使用できます-
例
babelを使用して上記のコードをES5に変換します。
コマンド
BabelJS-ES5
Rest
残りのパラメータは、次の例に示すように3つのドット(…)で始まります-
例
上記の関数では、n個のパラメーターを関数addに渡します。 ES5にあった場合にこれらすべてのパラメーターを追加するには、引数オブジェクトに依存して引数の詳細を取得する必要があります。 ES6では、 rest it は、上記のように3つのドットで引数を定義するのに役立ち、ループを介して数値の合計を取得できます。
注意-3つのドット、つまり休符を使用する場合、追加の引数は使用できません。
例
上記のコードは構文エラーになります。
es5へのコンパイルは次のようになります-
コマンド
バベル-ES5
スプレッド
Spreadプロパティには、残りのような3つのドットもあります。 以下は、spreadプロパティの使用方法を示す実例です。
例
上記のコードがbabelを使用してどのように変換されるかを見てみましょう-
コマンド
バベル-ES5
プロキシ
プロキシは、プロパティルックアップ、割り当て、列挙、関数、呼び出しなどの操作のカスタム動作を定義できるオブジェクトです。
構文
_target_と_handler_は両方ともオブジェクトです。
- _target_はオブジェクトであるか、別のプロキシ要素にすることができます。
- _handler_は、呼び出されたときに動作を与える関数としてのプロパティを持つオブジェクトになります。
例の助けを借りてこれらの機能を理解しようとしましょう-
例
上記の例でターゲットとハンドラを定義し、プロキシで使用しました。 プロキシは、キーと値を含むオブジェクトを返します。
出力
ここで、上記のコードをbabelを使用してES5にトランスパイルする方法を見てみましょう-
コマンド
バベル-ES5
BabelJS-ES5へのES6モジュールのトランスパイル
この章では、Babelを使用してES6モジュールをES5にトランスパイルする方法について説明します。
モジュール
JavaScriptコードの一部を再利用する必要があるシナリオを考えます。 ES6は、モジュールの概念であなたを助けます。
- モジュール*は、ファイルに記述されたJavaScriptコードの塊にすぎません。 モジュール内の関数または変数は、モジュールファイルでエクスポートしない限り使用できません。
簡単に言えば、モジュールは、モジュールにコードを記述し、コードの他の部分がアクセスする必要があるコードの部分のみを公開するのに役立ちます。
モジュールの使用方法と、モジュールをエクスポートしてコードで使用する方法を理解するための例を考えてみましょう。
例
2つの指定された数値を追加する3つのファイルadd.js、2つの指定された数値を乗算するmultiply.js、およびaddとmultiplyを呼び出して出力をコンソールするmain.jsがあります。
それらを main.js で使用するには、以下に示すようにインポートする必要があります
ブラウザで実行できるように、ファイルをビルドするにはモジュールバンドラーが必要です。
私たちはそれを行うことができます-
- Webpackを使用する
- Gulpの使用
ES6モジュールとWebpack
このセクションでは、ES6モジュールについて説明します。 また、webpackの使用方法も学びます。
始める前に、次のパッケージをインストールする必要があります-
Package.json
npmを使用して実行するスクリプトにパックおよび公開タスクを追加しました。 これが、最終ファイルを作成するwebpack.config.jsファイルです。
webpack.config.js
コマンドnpm run packを実行して、ファイルをビルドします。 最終的なファイルはdev/フォルダーに保存されます。
コマンド
コマンド
以下は、ブラウザで出力をテストするコマンドです-
プロジェクトにindexlを追加します。 これにより、dev/main_bundle.jsが呼び出されます。
出力
ES6モジュールとGulp
Gulpを使用してモジュールを1つのファイルにバンドルするには、browserifyとbabelifyを使用します。 まず、プロジェクトのセットアップを作成し、必要なパッケージをインストールします。
コマンド
プロジェクトのセットアップを開始する前に、次のパッケージをインストールする必要があります-
インストール後のpackage.json
gulpfile.jsを作成します。これは、タスクを実行してモジュールをバンドルするのに役立ちます。 上記で使用したものと同じファイルをwebpackで使用します。
例
gulpfile.jsはここで作成されます。 ユーザーはブラウザを使用し、トランスフォームを使用してバベル化します。 babel-preset-envは、コードをes5に変換するために使用されます。
私たちはbrowserifyとbabelifyを使用してモジュールのエクスポートとインポートを処理し、次のように同じものを1つのファイルに結合します-
babelifyがプリセットenvで呼び出される変換を使用しました。
main.jsを含むsrcフォルダーがbrowserifyに与えられ、devフォルダーに保存されます。
ファイルをコンパイルするには、コマンド gulp start を実行する必要があります-
コマンド
これが dev/ フォルダに作成された最終ファイルです-
indexlで同じを使用し、ブラウザで同じを実行して出力を取得します-
出力
BabelJS-ES7へのTranspile ES7機能
この章では、ES7の機能をES5に変換する方法を学びます。
ECMA Script 7には、次の新機能が追加されています-
- 非同期待ち
- べき乗演算子
- Array.prototype.includes()
babeljsを使用してES5にコンパイルします。 プロジェクトの要件に応じて、ecmaバージョン(ES7からES6またはES7からES5)でコードをコンパイルすることもできます。 ES5バージョンは最も安定しており、すべての最新および古いブラウザーで正常に動作するため、コードをES5にコンパイルします。
非同期待ち
非同期は、暗黙のプロミスを返す非同期関数です。 約束は解決されるか拒否されます。 非同期機能は、通常の標準機能と同じです。 この関数には、promiseを返すまで実行を一時停止するawait式を含めることができ、一度取得すると、実行が続行されます。 Awaitは、関数が非同期の場合にのみ機能します。
asyncとawaitの動作例を次に示します。
例
出力
await式は、タイマー関数が呼び出される前に追加されます。 タイマー関数は、5秒後にプロミスを返します。 awaitは、タイマー機能の約束が解決または拒否されるまで実行を停止し、後で続行します。
babelを使用して上記のコードをES5に変換します。
ES7-非同期待ち
コマンド
BabelJS-ES5
Babeljsはオブジェクトまたはメソッドをコンパイルしません。そのため、ここで使用されるプロミスは変換されず、そのまま表示されます。 古いブラウザでpromiseをサポートするには、promiseをサポートするコードを追加する必要があります。 今のところ、次のようにbabel-polyfillをインストールしましょう-
dev-dependencyではなく、依存関係として保存する必要があります。
ブラウザでコードを実行するには、node_modules \ babel-polyfill \ dist \ polyfill.min.jsのポリフィルファイルを使用し、以下に示すようにスクリプトタグを使用して呼び出します-
上記のテストページを実行すると、コンソールに次のような出力が表示されます。
べき乗演算子
例
出力
ES6-べき乗
べき乗演算子を変換するには、次のようにインストールするプラグインをインストールする必要があります-
コマンド
次のようにプラグインの詳細を .babelrc ファイルに追加します-
コマンド
BabelJS-ES5
Array.prototype.includes()
この機能は、渡された要素が配列に存在する場合はtrueを、存在しない場合はfalseを返します。
例
出力
ES6-array.includes
コマンド
バベル-ES5
古いブラウザでテストするには、以下に示すようにポリフィルを使用する必要があります-
出力
BabelJS-ES5へのES8のトランスパイル機能
文字列パディングは、javascriptに追加された新しいES8機能です。 babelを使用して文字列のパディングをES5に変換する簡単な例に取り組みます。
文字列のパディング
文字列パディングは、指定された長さに従って、左側から別の文字列を追加します。 文字列パディングの構文は次のとおりです-
構文
例
出力
ES8-文字列パディング
コマンド
バベル-ES5
以下に示すように、jsはbabel-polyfillとともに使用する必要があります-
testl
BabelJS-Babelプラグイン
BabelJSは、使用可能なプリセットとプラグインに基づいて、指定されたコードの構文を変更するjavascriptコンパイラです。 バベルのコンパイルの流れには、次の3つの部分が含まれます-
- 解析中
- 変身
- 印刷
babelに与えられたコードは、構文が変更されただけで返されます。 コードをes6からes5に、またはその逆にコンパイルするために、プリセットが.babelrcファイルに追加されるのをすでに見てきました。 プリセットはプラグインのセットにすぎません。 コンパイル時にプリセットまたはプラグインの詳細が指定されていない場合、Babelは何も変更しません。
私たちは今、次のプラグインについて議論しましょう-
- 変換クラスのプロパティ
- 変換指数演算子
- の
- オブジェクトの残りと広がり
- 非同期/待機
次に、プロジェクトのセットアップを作成し、いくつかのプラグインで作業します。これにより、Babelのプラグインの要件を明確に理解できます。
コマンド
babelに必要なパッケージをインストールする必要があります– babel cli、babel core、babel-presetなど。
babel 6のパッケージ
babel 7のパッケージ
プロジェクトでjsファイルを作成し、jsコードを記述します。
クラス-Transform-class-properties
この目的のために以下に示すコードを遵守してください-
例
現在、プリセットまたはプラグインの詳細をbabelに提供していません。 コマンドを使用してコードをトランスパイルする場合-
コードをそのまま入手します。 .babelrc ファイルにプリセットを追加しましょう。
注-プロジェクトのルートフォルダ内に .babelrc ファイルを作成します。
プリセットは既にインストールされています。今、私たちは再びコマンドを実行しましょう-
ES6では、クラス構文は次のとおりです
コンストラクターがあり、クラスのすべてのプロパティはその内部で定義されます。 ケースでは、クラス外でクラスプロパティを定義する必要があります。
例
上記のコードをコンパイルすると、babelでエラーがスローされます。 これにより、コードがコンパイルされなくなります。
これを希望どおりに機能させるために、babel-plugin-transform-class-propertiesと呼ばれるbabelプラグインを使用できます。 それを機能させるために、次のように最初にインストールする必要があります-
babel 6のパッケージ
babel 7のパッケージ
プラグインをbabel 6の.babelrcファイルに追加します-
ここで、コマンドを再度実行します。
コマンド
- main_out.jsにコンパイル*
出力
以下は、ブラウザで使用したときに得られる出力です-
べき乗演算子-変換指数演算子
例
べき乗演算子を変換するには、次のようにプラグインをインストールする必要があります-
バベル6のパッケージ
バベル7のパッケージ
babel 6の場合、次のようにプラグインの詳細を .babelrc ファイルに追加します-
コマンド
出力
の
babel6および7のプラグインに必要なパッケージは次のとおりです-
バベル6
バベル7
コマンド
出力
オブジェクトレストスプレッド
babel6および7のプラグインに必要なパッケージは次のとおりです-
バベル6
バベル7
コマンド
出力
非同期/待機
babel 6には次のパッケージをインストールする必要があります-
babel 7のパッケージ
コマンド
約束がサポートされていないブラウザでは機能しないため、ポリフィルを使用する必要があります。
出力
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
配列で使用されるメソッドはそのまま印刷されます。 それらを古いブラウザで動作させるには、以下に示すように、開始時にポリフィルファイルを追加する必要があります-
インデックス
出力
BabelJS-Babel CLI
BabelJSには組み込みのコマンドラインインターフェイスが付属しており、使いやすいコマンドを使用してJavaScriptコードを各ECMAスクリプトに簡単にコンパイルできます。 この章では、これらのコマンドの使用について説明します。
まず、プロジェクトにbabel-cliをインストールします。 コードのコンパイルにはbabeljsを使用します。
babel-cliをいじるプロジェクト用のフォルダーを作成します。
コマンド
表示
上記のプロジェクト用に作成されたPackage.json-
コマンドを実行してbabel-cliをインストールしましょう。
babel 6のパッケージ
babel 7のパッケージ
表示
babel-cliをインストールしました。ここに更新されたpackage.jsonがあります-
これに加えて、babel-presetとbabel-coreをインストールする必要があります。 インストールのコマンドを見てみましょう。
babel 6のパッケージ
babel 7のパッケージ
ここに上記のコマンドの更新されたpackage.jsonがあります-
下位互換性を持たせるために記述するJavaScriptコードにコンパイルする必要があるため、ECMA Script 5にコンパイルします。 そのためには、プリセット、つまりコンパイルが行われるesバージョンを探すようにbabelに指示する必要があります。 以下に示すように作成されたプロジェクトのルートフォルダーに .babelrc> ファイルを作成する必要があります。
次のプリセットの詳細を持つjsonオブジェクトが含まれています-
babel 7の場合、.babelrcは次のとおりです-
プロジェクトのローカルにbabelをインストールしました。 私たちのプロジェクトでbabelを使用するには、次のようにpackage.jsonで同じものを指定する必要があります-
JSファイルをコンパイルする
これで、JavaScriptファイルをコンパイルする準備ができました。 プロジェクトにフォルダーsrcを作成します。このフォルダに、main.jsというファイルを作成し、以下に示すようにes6 javascriptコードを記述します-
コマンド
出力
上記の場合、main.jsからのコードは、es5バージョンのターミナルに表示されます。 es6からの矢印関数は、上記のようにes5に変換されます。 コンパイルされたコードを端末に表示する代わりに、以下に示すように別のファイルに保存します。
プロジェクト内に、コンパイル済みファイルを保存するフォルダーを作成しました。 次に、出力をコンパイルして目的の場所に保存するコマンドを示します。
コマンド
出力
コマンド—out-fileのオプションは、選択したファイルの場所に出力を保存するのに役立ちます。
メインファイルに変更を加えるたびにファイルを更新する場合は、以下に示すように、コマンドに*-watch または *-w オプションを追加します。
コマンド
出力
メインファイルに変更を加えることができます。この変更はコンパイルされたファイルに反映されます。
上記の場合、ログメッセージを変更し、*-watch *オプションは変更をチェックし続け、同じ変更がコンパイル済みファイルに追加されます。
コンパイルされたファイル
前のセクションでは、個々のファイルをコンパイルする方法を学びました。 次に、ディレクトリをコンパイルし、コンパイルしたファイルを別のディレクトリに保存します。
srcフォルダーに、 main1.js というもう1つのjsファイルを作成します。 現在、srcフォルダーには2つのjavascriptファイル main.js および main1.js があります。
以下は、ファイル内のコードです-
次のコマンドは、 src フォルダーからコードをコンパイルし、out/フォルダーに保存します。 out/ フォルダーからすべてのファイルを削除し、空のままにしました。 コマンドを実行し、out/フォルダーの出力を確認します。
コマンド
outフォルダーに2つのファイルがあります-main.jsとmain1.js
次に、以下に示すコマンドを実行して、両方のファイルをbabeljsを使用して単一のファイルにコンパイルします。
コマンド
出力
一部のファイルのコンパイルを無視したい場合、以下に示すように—ignoreオプションを使用できます。
コマンド
出力
ファイルのコンパイル中に使用されるプラグインオプションを使用できます。 プラグインを利用するには、以下に示すようにインストールする必要があります。
コマンド
コマンド
出力
以下に示すように、コマンドでプリセットを使用することもできます。
コマンド
上記のケースをテストするために、.babelrcからプリセットオプションを削除しました。
また、次のようにコマンドラインから.babelrcを無視することができます-
上記のケースをテストするために、.babelrcにプリセットを追加しました。コマンドに—no-babelrcを追加したため、同じものは無視されます。 main_es5.jsファイルの詳細は次のとおりです-
BabelJS-バベルプリセット
Babelプリセットは、指定されたモードでトランスパイルするように指示するbabel-transpilerの構成の詳細です。 ここでは、この章で説明する最も一般的なプリセットをいくつか紹介します-
- ES2015
- Env
- 反応する
コードを変換する環境を持つプリセットを使用する必要があります。 たとえば、_es2015_プリセットはコードを_es5_に変換します。 値が_env_のプリセットも_es5_に変換されます。 また、追加機能、つまりオプションもあります。 機能を最新バージョンのブラウザーでサポートする場合、babelはそれらのブラウザーで機能がサポートされていない場合にのみコードを変換します。 プリセット_react_を使用すると、Babelは反応するときにコードを変換します。
プリセットを使用するには、プロジェクトのルートフォルダーに.babelrcファイルを作成する必要があります。 動作を示すために、以下に示すプロジェクト設定を作成します。
コマンド
babel cli、babel coreなどとともに、次のように必要なbabelプリセットをインストールする必要があります。
Babel 6パッケージ
Babel 7パッケージ
注-babel-preset-es2015はbabel 7以降では非推奨です。
プロジェクトのルートに.babelrcファイルを作成します(babel 6)-
babelrcでは、プリセットはes2015です。 これは、コードをes2015に変換するというbabelコンパイラーへの指示です。.
バベル7の場合、次のようにプリセットを使用する必要があります-
ここにインストール後のpackage.jsonがあります-
babelをローカルにインストールしたので、package.jsonのスクリプトセクションにbabelコマンドを追加しました。
プリセットes2015を使用してトランスコンパイルをチェックする簡単な例に取り組みましょう。
例
以下に示すように、es5に変換されます。
コマンド
Env
Envプリセットを使用して、トランスコードする最終コードの環境を指定できます。
上記で作成したのと同じプロジェクトセットアップを使用し、次に示すようにes2015からenvにプリセットを変更します。
さらに、babel-preset-envをインストールする必要があります。 以下のコマンドを実行して、同じものをインストールします。
コマンド
main.jsを再度コンパイルし、出力を確認します。
コマンド
トランスコンパイルされたコードはes5であることがわかりました。 コードが実行される環境がわかっている場合は、このプリセットを使用して指定できます。 たとえば、次のようにブラウザをchromeとfirefoxの最新バージョンとして指定した場合。
コマンド
現在、矢印関数の構文をそのまま取得しています。 ES5構文には組み込まれていません。 これは、コードでサポートしたい環境がすでにarrow関数をサポートしているためです。
Babelはbabel-preset-envを使用して環境に基づいてコードをコンパイルします。 以下に示すように、nodejs環境に基づいてコンパイルをターゲットにすることもできます
コードの最終的なコンパイルは次のとおりです。
コマンド
Babelは、nodejsの現在のバージョンに従ってコードをコンパイルします。
反応プリセット
Reactjsを使用している場合は、reactプリセットを使用できます。 簡単な例に取り組み、反応プリセットを使用して出力を確認します。
プリセットを使用するには、次のようにbabel-preset-react(babel 6)をインストールする必要があります-
バベル7の場合、それは次のとおりです-
babelrcの変更は、babel6について次のとおりです-.
babel 7の場合
コマンド
main.jsのコードは、preset:reactを使用してreactjs構文に変換されます。
BabelJS-BabelとWebpackの使用
Webpackは、js、スタイル、画像などの依存関係を持つすべてのモジュールをパックするモジュールバンドラーです。 静的アセット.js、.css、.jpg、.pngなどに変換します。 Webpackには、必要な形式にコンパイルするのに役立つプリセットが付属しています。 たとえば、ES5または6または7などでコードをコンパイルするのに役立つes2015またはenvプリセットなど、react形式で最終出力を取得するのに役立つ反応プリセット。 プロジェクトのセットアップでbabel 6を使用しました。 babel7に切り替える場合は、@ babel/babel-package-nameを使用してbabelの必要なパッケージをインストールします。
ここでは、babelとwebpackを使用したプロジェクトのセットアップについて説明します。 __というフォルダーを作成し、Visual Studio IDEで同じフォルダーを開きます。
プロジェクトのセットアップを作成するには、次のようにnpm initbabelwebpackを実行します-
これは、npm initの後に作成されたpackage.jsonです-
次に、babelとwebpackで作業するために必要なパッケージをインストールします。
ここにインストール後のPackage.jsonがあります-
ここで、jsファイルをバンドルするためのすべての詳細を含むwebpack.config.jsファイルを作成します。 これらのファイルは、babelを使用してes5にコンパイルされます。
サーバーを使用してwebpackを実行するには、webpack-serverを使用します。 以下はそれに追加された詳細です-
webpack-dev-serverを起動し、最終ファイルが保存されているパスを更新するpublishコマンドを追加しました。 現在、最終ファイルの更新に使用するパスは/devフォルダーです。
Webpackを使用するには、次のコマンドを実行する必要があります-
まず、webpack.config.jsファイルを作成する必要があります。 これらには、webpackが機能するための構成の詳細が含まれます。
ファイル内の詳細は次のとおりです-
ファイルの構造は上記のとおりです。 現在のパスの詳細を提供するhパスで始まります。
次はmodule.exportsオブジェクトで、プロパティのエントリ、出力、モジュールがあります。 エントリは開始点です。 ここでは、コンパイルする必要があるメインのjsファイルを指定する必要があります。
- path.resolve(_dirname、 ‘src/main.js’)*-ディレクトリ内のsrcフォルダーとそのフォルダー内のmain.jsを探します。
出力
出力は、パスとファイル名の詳細を含むオブジェクトです。 パスは、コンパイルされたファイルが保持されるフォルダーを保持し、ファイル名は、lファイルで使用される最終的なファイルの名前を示します。
モジュール
モジュールは、ルールの詳細を持つオブジェクトです。 次のプロパティがあります-
- test
- 含める
- ローダ
- 問い合わせ
_Test_は、.jsで終わるすべてのjsファイルの詳細を保持します。 パターンがあり、指定されたエントリポイントの最後で.jsを検索します。
_Include_は、参照するファイルで使用中のフォルダーを指示します。
_Loader_は、コードのコンパイルにbabel-loaderを使用します。
_Query_には、プロパティプリセットがあります。これは、値env – es5またはes6またはes7の配列です。
srcフォルダーと_main.js_フォルダーを作成します。 ES6でjsコードを記述します。 後で、コマンドを実行して、webpackおよびbabelを使用してes5にコンパイルされることを確認します。
コマンドを実行します-
コンパイルされたファイルは次のようになります-
コードは上記のようにコンパイルされます。 Webpackは内部的に必要なコードを追加し、main.jsのコードは最後に表示されます。 上記のように値をコンソール化しました。
次のようにlファイルに最終的なjsファイルを追加します-
コマンドを実行します-
出力を確認するには、ファイルを開くことができます-
上記のコンソール値を取得します。 次に、webpackとbabelを使用して、単一のファイルにコンパイルしてみましょう。
webpackを使用して、複数のjsファイルを単一のファイルにバンドルします。 Babelは、es6コードをes5にコンパイルするために使用されます。
今、src/フォルダに2つのjsファイルがあります-main.jsとPerson.jsは次のように-
エクスポートを使用してPersonクラスの詳細を使用しました。
main.jsでは、ファイルパスからPersonをインポートしました。
注-person.jsを含める必要はなく、ファイルの名前だけを含める必要があります。 Personクラスのオブジェクトを作成し、上記のように詳細をコンソール化しました。
Webpackは person.js と main.js を組み合わせ、 dev/main_bundle.js を1つのファイルとして更新します。 ブラウザで出力を確認するには、コマンド npm run publish を実行します-
BabelJS-BabelとJSXの操作
この章では、JSXとbabelの操作について理解します。 詳細に入る前に、JSXとは何かを理解しましょう。
JSXとは何ですか?
JSXは、xml構文を組み合わせたJavaScriptコードです。 JSXタグには、XMLのように見えるタグ名、属性、および子があります。
Reactは、通常のJavaScriptではなくJSXをテンプレート化に使用します。 使用する必要はありませんが、それに付属するいくつかの長所を次に示します。
- コードをJavaScriptにコンパイルしながら最適化を実行するため、高速です。
- また、タイプセーフであり、コンパイル中にほとんどのエラーをキャッチできます。
- HTMLに精通していれば、テンプレートを簡単かつ迅速に作成できます。
プロジェクトのセットアップでbabel 6を使用しました。 babel 7に切り替える場合は、 @ babel/babel-package-name を使用してbabelの必要なパッケージをインストールします。
プロジェクトのセットアップを作成し、webpackを使用して、Babelを使用して通常のJavaScriptに反応するjsxをコンパイルします。
プロジェクトのセットアップを開始するには、以下のbabel、react、webpackのインストール用のコマンドを実行します。
コマンド
次に、作業に必要なパッケージをインストールします-babel、webpack、jsx-
ここにインストール後のpackage.jsonがあります-
ここで、webpack.config.jsファイルを作成します。このファイルには、jsファイルをバンドルしてbabelを使用してes5にコンパイルするためのすべての詳細が含まれます。
サーバーを使用してwebpackを実行するには、webpack-serverと呼ばれるものがあります。 publishというコマンドを追加しました。このコマンドはwebpack-dev-serverを起動し、最終ファイルが保存されているパスを更新します。 現在、最終ファイルの更新に使用するパスは/devフォルダーです。
webpackを使用するには、次のコマンドを実行する必要があります-
ファイル内の詳細は次のとおりです-
ファイルの構造は上記のとおりです。 現在のパスの詳細を示すパスで始まります。
次はmodule.exportsオブジェクトで、プロパティのエントリ、出力、モジュールがあります。
エントリーは出発点です。 ここで、コンパイルするメインのjsファイルを指定する必要があります。
- path.resolve(_dirname、 ‘src/main.js’)-ディレクトリ内のsrcフォルダーと、そのフォルダー内の *main.js を探します。
出力
出力は、パスとファイル名の詳細を含むオブジェクトです。 パスはコンパイルされたファイルが保持されるフォルダーを保持し、ファイル名は l ファイルで使用される最終的なファイルの名前を示します。
モジュール
- _Module_は、test、include、loader、queryなどのプロパティを持つルールの詳細を持つオブジェクトです。
- _Test_は、.jsおよび.jsxで終わるすべてのjsファイルの詳細を保持します。指定されたエントリポイントの末尾で.jsおよび.jsxを検索するパターンがあります。
- _Include_は、ファイルの検索に使用するフォルダーを指示します。
- _Loader_は、コードのコンパイルにbabel-loaderを使用します。
- _Query_には、プロパティプリセットがあります。これは、env – es5またはes6またはes7の値を持つ配列です。 es2015を使用し、プリセットとして反応しました。
フォルダー* src/.*を作成し、その中に main.js と App.jsx を追加します。
次のコマンドを実行して.jsファイルをバンドルし、プリセット es2015 および react を使用して変換します。