序文: 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 チュートリアル 実装図
1: nginxサーバーソリューション、.conf構成ファイルを変更する解決策は2つある1: 位置 ...
ブラウザ (Web ドライバー) ベースの Selenium テクノロジを使用してデータをクロールす...
1 概要システム Centos8 では、httpd を使用してローカル Web サーバーを構築します...
効果は以下のとおりです。 分析する1. ここでは、点を囲む 3 つの円がズームアニメーションを実行し...
DockerにNginxをインストールするNginx は、IMAP/POP3/SMTP サービスも提...
1. <a>タグを使用して完了します <a href="/user/te...
1. MySQL アーキテクチャストレージ エンジンを紹介する前に、まずは MySQL アーキテクチ...
1 ダウンロードアドレスは https://dev.mysql.com/downloads/mysq...
.NET SDK ダウンロード リンクhttps://dotnet.microsoft.com/do...
目次MySQL の 4 つの分離レベルデータ テーブルを作成します。分離レベルの設定物事の分離レベル...
OpenSSL を使用して SSL キーと CSR ファイルを生成するHTTPS を設定するには、秘...
この記事から、MySQL を紹介し学習するための新しい一連の記事がスタートします。なぜ MySQL ...
問題/障害/シナリオ/要件Eve-ng の仮想マシン OVA のハードディスクは 38G しかないた...
ページ分割されたクエリを実行するには: 1. MySQL の場合、サブクエリと結合の使用は推奨されま...
目次導入主な特徴エフェクト表示キーコード導入音声キューイングシステムは、銀行、レストラン、病院などの...