ホームページ >ウェブフロントエンド >jsチュートリアル >独自のバベルプラグインを構築することにより、ASTを理解します
コアポイント:
私たちの目標は、MORIライブラリを使用して永続的なデータ構造に変換される通常のオブジェクトおよび配列リテラルを使用できるプラグインを設計することです。
次のようなコードを書きたい:
そして、それを次のコードに変換します:
<code class="language-javascript">var foo = { a: 1 }; var baz = foo.a = 2; foo.a === 1; baz.a === 2;</code>moriscript
<code class="language-javascript">var foo = mori.hashMap('a', 1); var baz = mori.assoc(foo, 'a', 2); mori.get(foo, 'a') === 1; mori.get(baz, 'a') === 2;</code>から始めましょう!
babelの概要:
バベルを掘り下げると、ほとんどのプロセスを処理する3つの重要なツールが見つかります。
分析
生成babel-traverse
babel-generator
ASTとは何ですか?
このチュートリアルを継続する前に、ASTの目的を理解することが重要です。彼らが何であるか、そしてなぜ私たちが彼らを必要としているのかを掘り下げましょう。 javascriptプログラムは通常、一連のキャラクターで構成され、それぞれが人間の脳に対して特定の視覚的に重要です。これは、一致する文字(
、、
)、キャラクターのペア(、[]
)、インデント、インデントを使用してプログラムをより簡単に使用できるため、非常にうまく機能します。 {}
しかし、これはコンピューターにとってあまり役に立ちません。彼らにとって、各文字はメモリ内の数値であり、これらの文字を使用して「この宣言にはいくつの変数がありますか?」などの高度な質問をすることはできません。代わりに、コードを妥協し、プログラムできるものに変換し、コンピューターを理解できるものに変換する方法を見つける必要があります。 次のコードを参照してください:
このプログラムのためにASTを生成すると、以下に示すように構造になります。
<code class="language-javascript">var foo = { a: 1 }; var baz = foo.a = 2; foo.a === 1; baz.a === 2;</code>すべてのASTは、プログラムのすべてのトップレベルステートメントを含むツリーのルートにあるプログラムノードから始まります。この場合、2つしかありません:
識別子「a」を数値の文字 "3"に割り当てるバリエルドクレアレーターを使用したバリエルドクレート。
Babelプラグインを書くとき、私たちの仕事はASTを取得し、いくつかのノードを挿入/mov/削除/削除して、コードを生成するために使用できる新しいASTを作成することです。
設定:
開始する前に、ノードとNPMがインストールされていることを確認してください。次に、プロジェクトのフォルダーを作成し、
ファイルを作成し、次の開発依存関係をインストールします。次に、プラグインのファイルを作成し、デフォルト関数をエクスポートします。
package.json
この関数は、ビジターモードのインターフェイスを公開し、後で戻ります。
<code class="language-javascript">var foo = mori.hashMap('a', 1); var baz = mori.assoc(foo, 'a', 2); mori.get(foo, 'a') === 1; mori.get(baz, 'a') === 2;</code>最後に、ランナーを作成してプラグインをテストします。
<code class="language-javascript">var a = 3; a + 5</code>Moriscriptサンプルファイルの名前を使用してこのスクリプトを呼び出して、予想されるJavaScriptを生成するかどうかを確認できます。たとえば、
。
(以下は、アレイ、オブジェクト、割り当ての処理、および元のテキストと一致する最終的な結論とFAQを導入し続けていますが、言語と構造はスムーズに調整されています。そして、より自然なことです以上が独自のバベルプラグインを構築することにより、ASTを理解しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。