序文: 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 チュートリアル 実装図
jQueryプラグインの毎日の積み重ねメニュー、参考までに、具体的な内容は次のとおりです。スタックメ...
年末なので仕事も少なくなっています。私が何もせずにいるのを見ると、上司はきっと不快に思うでしょう。そ...
質問一部のページでは、onload でデータを要求してからビューをレンダリングするため、ミニプログラ...
目次1. シナリオ2. 基盤となるAPIを簡素化する2.1 自動的に破棄を呼び出す2.2 VM値を作...
この記事では、Web デザインにおけるフォーム入力ボックスに関するヒントとコードをいくつか紹介します...
vsftpd の概要vsftpd は「very secure FTP daemon」の略称で、セキ...
初心者は自分で録音しましょう1. スーパーバイザーをインストールします。 Supervisor は ...
FTP は主にファイル転送に使用され、Linux では vsftpd で実装されるのが一般的です。F...
Docker の基盤技術: Docker の基盤となる 2 つのコア テクノロジーは、名前空間とコ...
<input> はユーザー情報を収集するために使用され、終了ステートメントはありません。...
1. はじめに行ロックとテーブルロックの違いは面接で頻繁に出てくるはずです。MySQL のロックにつ...
<br />注:ウェブサイトの種類を示すものを除くすべてのテキストは、企業サイト用です。...
背景:サイトはフロントエンドとバックエンドから分離されています: vue+springbootフロン...
ファイル サーバーは、企業内で最も一般的に使用されるサーバーの一つであり、主にファイル共有を提供する...
目次1. 属性を追加する2. 複数のオブジェクトを結合する3. オブジェクトのプロパティを削除する4...