JavaScriptは、生態系の幅のために一意です。新しい標準が構文砂糖を追加している間、ブラウザでサポートされていると時間がかかります。 Babelは自動転置によってこの問題を回避する。
製品の背後にある考え方は簡単です.BabelはES6またはES7コードを取り込み、新しい構文要素をエミュレーションコードで置き換えます。その出力はClassic JavaScriptの構文を確認し、Internet Explorerのような古いブラウザで実行されます。
Babelの最初のリリースは嵐で世界を取りました。それが最初に現れた後、反応、VUE、EMBERのようなさまざまなフレームワークがそれを受け入れました。開発者は、バックグラウンドで機能することを知らずに製品を使用しています - 複数の人気のあるNPMプロジェクトにはBabelに依存しています。
これらの依存関係は、前任者のリリースプロセスを紛争収益済みの事件に変換しました。まだ小さなメンテナチームによって管理されているバージョン7は、できるだけ互換性があると試みました。壊れた変化は数短い、一方コード生成品質は高いままになります(チームを使って作業して、文書を保存する場合 クラウドストレージ あなたがまとまりを維持するのを助けます)。
あなたがBabel以前に働いていない場合は、これをあなたのガイドにしてください。互換性のあるWorriesのない高度なJavaScript機能を使用できることは、人生をはるかに簡単にします。
あなたのプロセスを合理化するためのいくつかのツールが欲しいですか?私たちのガイド ウェブサイトビルダー 役立ちます。長期サポートが欲しい?右をもらう ウェブホスティング サービス。
Babelは通常ノードランタイム環境に存在します。使用されているバージョンをチェックして起動しましょう。出力は、次の記事を作成するために使用されたUbuntu 14.04ワークステーションで見つかったバージョン状態を提供します。これはPedantryではありません - この手順に付随する図では、Babelチームがかなりの数のnode.jsバージョンのサポートをドロップしたことを示しています。
Tamhan @ Tamhan-ThinkPad:〜$ node --version
v8.14.0
Tamhan @ Tamhan-ThinkPad:$ NPM - Version
6.4.1
バージョン7の壊れた変更は、Babelパッケージを自分の名前空間に移動させることを含んでいます。古いパッケージはさまざまなリポジトリから削除されませんでした。これは、レガシーパッケージ名の使用がこのステップに伴う図に示されている状況につながるため、重要です。
Tamhan @ Tamhan-ThinkPad:〜/ workspaceB7 $ NPM
--save-dev @ babel / core @ babel / cli @
Babel / Preset-env @ Bable / Node
。 。 。
+ @ Babel / Core @ 7.2.0
+ @ babel / node @ 7.2.0
+ @ Babel / CLI @ 7.2.0
+ @ Babel / Preset-env @ 7.2.0
上記のステップは、NPMプロジェクトの内部に取り組むことを前提としています。その場合、ビルドアクションを介してBabelを実行するのは簡単です。開いた Package.json. 以下のコードで説明されているようにそれを修正します。
{
。 。 。
"main": "index.js"、
"スクリプト":{
"test": "エコー\"エラー:テストなし
指定「&&出口1」、
"build": "babel index.js -d lib"
Babelを作業に置くことは、ビルドアクションを発射することを含みます。これはnpm runコマンドを介して最もよく達成されます。 the - 価値は、結果がに配置されなければならないことをBabelに知らせます。 lib lib フォルダ - この手順に付属の図は、そのフォルダがその場で作成されることを示しています。
Tamhan @ Tamhan-ThinkPad:〜/ workspaceB7 $ NPM
ビルドを実行します
> [email protected]ビルド/ホーム/タムハン/
WorkSpaceB7
> babel index.js -d lib.
ベイビルで1ファイルを正常にコンパイルしました。
さらに設定オプションなしでBabelを呼び出すことで、転置を有効にしません。コードは、フレームワークがターゲット環境に関する詳細情報を受信した場合にのみ割り当てることができます。これはコマンドラインパラメータを介して、または呼び出されたファイルを作成することによって行うことができます。 .babelrc プロジェクトのルートで。
Babelはプラグインのセットを介して自分自身を構成し、それぞれがコードベースに転置変換を適用します。私たちはを使います env env パッケージ - ほとんどのベースをカバーすることを目的とした事前に構成された変換のセットが付属しています。
{
「プリセット」:[「@ babel / preset-env」]
いくつかのライブコードに対してプログラムをテストするために、Index.jsに少し新しい年齢のJavaScriptを追加してください。このステップに付随するコードはレガシーブラウザでは機能しません - 完了したら、暗黙的な関数はaに置き換えられます 正常 図に示すように、宣言。
関数tamstest(){
[1,2,3] .map((n)= gt; n + 1)。
env env デフォルトでほとんどの転置を適用します。製品の目標は、帯域幅とパフォーマンスコストを考慮せずに、普遍的に互換性のあるJavaScriptを作成することです。 Aを渡して設定を変更できます ターゲット Object - 以下の例は、Chromeの特定のバージョンとIEをターゲットにします。
{
「プリセット」:[
【
"@ Babel / Preset-env"、
{
「ターゲット」:{
"Chrome": "58"、
"IE": "11"
}
}
]
]
BabelのブラウザターゲティングはChromeとInternet Explorerに限定されません。協力のおかげで ブラウザリスト 次に示すように、開発者は1ダースのターゲットから混合して一致させることができます。
名前は大文字と小文字が区別されません。
ブラウザリストは高度なクエリも取得できます。 そのホームページ 構成オプションを一覧表示します。これらのすべてが修正によってBabel内でも使用できる可能性があります。 バベル 。ワークステーションにNPXがインストールされている場合は、クエリをローカルに評価できます。
{
「ターゲット」:「> 0.25%、死んではない」
Babelを手で起動しなければならないとすぐに面倒になります。 nodemonユーティリティはファイルシステムのリソースを監視し、変更が検出されるとコマンドを消します。理論的には、Nodemonサポートを追加することは小さな変更によって処理されます Package.json. 。
{
"名前": "workspaceb7"、
。 。 。
"main": "index.js"、
「スクリプト」:
{
"start": "nodemon --exec babel-node
Index.js "、
いくつかのワークステーションがあります n n グローバルに取り付けられています。そうでない場合は、プログラムを呼び出すと、以下のものと同様のエラーメッセージが表示されます。幸い、展開 n n で簡単に達成されます NPMインストール コマンド。
Tamhan @ Tamhan-ThinkPad:〜/ workspaceB7 $ NPM
--save-dev nodemonをインストールする
発射します NPMスタート ターミナルウィンドウで、の内容を変更する index.js. Geditのようなエディタで Visual Studioコード 。保存後、 n n ステータス情報を出力します。
[Nodemon]変更のために再起動します...
[nodemon] `babel-node index.js`を起動します
[nodemon]クリーン出口 - 変更を待っています
再起動する前に
一方 n n この時点で、検出は完璧に機能するはずです。 index.js. INのファイルが見つかるファイル lib lib 更新しないでください。これは裸のものによって引き起こされます Babel-Node - トランスパイル付きファイルをディスクにコミットしません。代わりに、トランザクションファイルと連動するノードCLIの変更されたバージョンから発生します。
Babelはコマンドラインの作業に限られていません。正しいパッケージがインストールされている場合は、コードを別のプログラムから解除することもできます。このステップに付随するスニペットは、入力文字列に基本的な変換のセットを適用します。設定設定は通常、から取得されます。 バベル ファイル。
var babel =要求( "@ babel / core")。
"@ babel / core"からインポート{変換};
"@ babel / core"からBabelとしてインポート*。
Babel.Transform( "code();"、
関数(err、結果){
result.code;
result.map;
結果。
});
ソースコードは通常、文字列変数に保存されません。 Babel APIは、ファイル名の入力文字列をファイル名の入力文字列を指定して説明します。ただし、結果は通常のJavaScript変数として返されます。
Babel.TransformFile( "filename.js"、オプション、
関数(err、結果){
結果; // => {コード、Map、AST}
}
)
Babel 7は、ほとんどのAPI呼び出しの同期バージョンと非同期バージョンを導入しました。あなたのニーズに合わせて正しいものを選ぶことを確認してください - 少しの例を飛ぶことができますが、より複雑なファイルでBabelが緩んで設定すると、数十秒に走行する遅延が簡単につながる可能性があります。
バックグラウンドで何が起こるのか疑問に思うことを自分で見つけることができるようにしたら、 このページ 。それは現在Babel配布に含まれているすべてのプラグインのリストを提供し、そしてまた彼ら自身のプラグインを作成しようとするすべての人々のためのいくつかのヒントを含んでいます。
Babelは、新しい年齢のJavaScript要素を転送するには限定されません。この製品には、機能制約付きのTypeScriptエンジンが含まれています。入力情報を切り替えて、高度な要素を置き換えます。残念ながら、Babelは型チェックを実行しません - これはTypeScript言語の最も重要な利点の1つを排除します。
{
「プリセット」:[「@ベイバー/プリセットスクリプト」」]
転送操作は通常スムーズに解決されている間、問題が発生することがあります。その場合、 Babel Regl 役に立ちます。ワークステーションのブラウザでBabelを実行し、入力と出力を互いの隣に表示します。
私たちの序論は、Babelがさまざまなプロジェクトにわたって広範囲にわたる使用を見ることを説明しました。 Babelのメンテナチームは、Aのバージョンアップグレードを簡素化します 詳細な変更ログ 。プログラム的にBaberを使用している場合は、相談することを忘れないでください。 APIアップグレードガイド 。
この記事はもともとCreative Web Design Magazineの第283号に掲載されました ウェブデザイナー 。 ここで問題283を購入してください または ここでWeb Designerを購読してください 。
関連記事:
UXデザインの専門家の需要が成長し続けているため、デザイナーは高品質のプロトタイプを作成するのに十分強力な使いやすいツールを探して..