序文: Vue3 がリリースされてからかなり経ちますが、最近、会社のプロジェクトで Vue2.x のソースコードも簡単に読んでみました。Vue3 の再構築以降、Vue プロジェクトのディレクトリ構造も大きく変わりました。各機能モジュールは 読者の便宜と記事の長さを抑えるため、ソースコードを読む際にあまり注意を払う必要のないロジックは折り返したり、/* ロジックを無視 */ などのコメントで無視したりします。 個人的には、ソース コード分析記事を読むときに、冒頭に長いコード セクションが表示されるのは好きではありません。これは、それを読んでいない学生を簡単に混乱させる可能性があるためです。そこで、このシリーズの記事では、キーコードのフローチャートを描いてみたいと思います。目的は同じで、全員が理解するためのコストを削減できるようにし、同時に生徒が次回自主的に読むときに参照できるフローチャートを提供することです。 1. Vueエントリファイルの解釈Vue オブジェクトのエントリ ポイント、 フローチャートを見た後は、一緒にコードを見てみましょう。この時点で、ほとんどの生徒は図のコードについて明確に理解していると思います。 すべてのコードをスキップして、ファイルの最後の 35 行を見てください。registerRuntimeCompiler 関数 コードの 17 行目を見ると、 <テンプレート> <div> こんにちは世界 </div> </テンプレート> この単純なテンプレートをコンパイルすると、 const _Vue = Vue return function render(_ctx, _cache) { with (_ctx) { const { openBlock: _openBlock, createBlock: _createBlock } = _Vue return (_openBlock(), _createBlock("div", null, "Hello World")) } } この魔法の このコード文字列の結果を取得した後、コードを見ていきます。25 行目では 最後に、エントリ ファイルは 上記のソースコードの 1 行目を見ると、エントリ ファイルが この時点で、 2. コンパイル処理 以下の baseCompile 関数を見てみましょう。 まず、関数宣言から、 エクスポートインターフェースCodegenResult { コード: 文字列 プリアンブル: 文字列 ast: ルートノード マップ?: RawSourceMap }
上記のソース コードの 12 行目を見て、 次のソースコードは 16 行目です。これは、 最後に、32 行目で、変換された AST を生成に渡し、 compile-core モジュールでは、AST 解析、 この記事では、エントリ ファイルから始まるコンパイルの一般的なプロセスについて説明します。コンパイラのこのモジュールのコードを読むときに、誰もがプロセスを明確に理解できるようにし、フローチャートとともに読むとさらに興味深くなることを願っています。 これで、Vue3 コンパイルプロセス - ソースコード分析に関するこの記事は終了です。Vue3 コンパイルプロセスの関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Docker インストール Nginx チュートリアル 実装図
仮想メモリとは何ですか?まずはWikipediaからの紹介文をそのまま引用します。仮想メモリは、コン...
目次序文準備行く!文章プロセスを開始するメインループまとめ要約する序文準備皆さんは、こんなことを考え...
この記事では、WeChatミニプログラムのビデオ弾幕の位置をランダム化するための具体的なコードを紹介...
1. VPSとCentOSシステムを購入しましたが、サーバーの時間が北京時間と一致せず、時差があるこ...
目次使用シナリオ達成方法1. 動的コンポーネントを配置する場所2. コンポーネントのインスタンスを取...
いくつかの記事を読んだ後、ようやく MySQL で row_number() ソートを実装する方法が...
目次起源仮想メモリページングとページテーブルメモリのアドレス指定と割り当て関数プロセスメモリ管理デー...
序文: Vueプロジェクトで透かし効果を使用するには、コンテナを指定できます効果画像: 1. コンテ...
目次JavaScriptでは、 forループを記述する一般的な方法がいくつかあります。最初の、そして...
基本構造:コードをコピーコードは次のとおりです。 <ダウンロード> <dt>...
目次1. JDKをダウンロードする(例としてjdk1.8.0を使用する) 2. JDK をインストー...
どちらの方法も、一定時間後に JavaScript コードを実行するために使用できますが、それぞれに...
UI コンポーネントを作成するときに、アニメーションを考慮しなければ、アニメーションを実現するのは非...
Web ページを作成する過程では、フォームがよく使用されます。しかし、フォーム上のコントロールを変更...
この記事の例では、参考のために航空機戦争ゲームを実装するためのJSの具体的なコードを共有しています。...