1. 仮想DOMとは何ですか?仮想 DOM は、本質的にはビューのインターフェース構造を記述するために使用される共通の JS オブジェクトです。 Vue では、各コンポーネントにレンダリング関数があります。 レンダリングがない場合は、テンプレートを探します。テンプレートがない場合は、el を探します。el がある場合は、el.outHTML がテンプレートとして使用され、この文字列がレンダリング関数にコンパイルされます。 各レンダリング関数は仮想 DOM ツリーを返します。つまり、各コンポーネントは仮想 DOM ツリーに対応します。 話題外ですが、console.dir() はオブジェクトのすべてのプロパティとメソッドを表示できます。 戻り値がない場合、ページには実際の DOM が存在しません。 h関数名はカスタムで、h関数の構造はh(ラベル、{独自の属性}、[サブ要素])です。 h関数で判定する。オブジェクトでない場合はテキストノードである。↑途中の構成は省略されていると考えられる ページ上にレンダリングされます。 h1 子要素↓ .elm を通じて実際のノードに対応する h('h1','{ {title}}') は絶対に受け入れられません。h('h1',this.title) にする必要があります。 2. 仮想 DOM が必要な理由Vue では、ビューをレンダリングすると render 関数が呼び出されます。このレンダリングは、コンポーネントが作成されたときだけでなく、ビューが依存するデータが更新されたときにも発生します。レンダリング中に実際の DOM を直接使用すると、実際の DOM の作成、更新、挿入によってパフォーマンスが大幅に低下し、レンダリング効率が大幅に低下します。 初めて読み込むときに実 DOM を生成することは避けられず、必要なことなので、実 DOM を生成することに問題はありません。 3. 仮想DOMはどのようにして実際のDOMに変換されるのかコンポーネント インスタンスが初めてレンダリングされるとき、まず仮想 DOM ツリーを生成し、ノードを深さ優先でトラバースし、属性を設定してから、仮想 DOM ツリーに基づいて実際の DOM を作成します。実際の DOM をページ内の適切な位置にマウントし、div#app を直接置き換えます。この時点で、各仮想 DOM は実際の DOM に対応します。 div#appが直接置き換えられているため、等しくありません。 コンポーネントがレスポンシブなデータ変更の影響を受け、再レンダリングする必要がある場合でも、レンダリング関数を再度呼び出して新しい仮想 DOM ツリーを作成し、新しいツリーと古いツリーを比較します。比較を通じて、Vue は最小の更新量を見つけ、必要な実際の DOM ノードを更新して、実際の DOM への変更を最小限に抑えます。 diff アルゴリズムを使用して、2 つの仮想 DOM が異なるかどうかを確認し、対応するノードの実際の DOM を変更して目的の効果を実現し、変更を最小限に抑えて効率を向上させます。 4. テンプレートと仮想DOMの関係スキャフォールディングによって構築された仮想DOM Vue フレームワークにはコンパイル モジュールがあり、主にテンプレートをレンダリング関数に変換する役割を担っており、レンダリング関数はそれを呼び出した後に仮想 DOM を取得します。 コンパイル プロセスは 2 つのステップに分かれています (babel と webpack はどちらもこの方法で作成されます)。 テンプレート文字列をAST(抽象構文木、ツリー構造で内容を記述する)に変換し、ASTをレンダリング関数に変換します。 AST↓、ASTはスタックで構築されていることを述べておきます 従来のインポート方法 (src) を使用する場合、コンポーネントが初めてロードされたときにコンパイル時間が発生し、これをランタイムコンパイルと呼びます。繰り返しますが、ステップ 1 は非常に時間がかかります。 上記にテンプレートが書かれていない場合 エラーが報告されますが、vue.config.jsで設定できます。 module.export={runtimeCompiler:true} コンパイルされたコンテンツが追加され、コンテンツが大きくなるため、推奨されません。 (パッケージ化を高速化するために esbuild と vite について言及したいと思いますが、私はまだ使用していません。) テンプレートが存在するのは、開発者がインターフェース コードを書きやすくするためだけです。 同等 例: ディレクトリを自動生成する ここで、スロット内のコンテンツに基づいてディレクトリを自動的に生成できるコンポーネントを作成する必要があります。 Vue 仮想 DOM の問題に関するこの記事はこれで終わりです。Vue 仮想 DOM に関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: Alibaba Cloud CentOS 7 に yum を使用して MySQL をインストールする正しい方法 (推奨)
>>: Windows 8.1 で MySQL5.7 のルート パスワードを忘れた場合の解決方法
1. スクロールビュー垂直スクロールを使用する場合は、固定の高さを指定して CSS で高さを設定する...
ファイル内の文字列の数を数えることは、実際には砂の中の石を探すようなものです。ある人は、石を見た後に...
目次1. はじめに2. ポイントフィーチャーレイヤーの集約3. 重合の特殊処理4. 重合の特殊処理 ...
目次1. オペレーティングシステムとは何か2. Linuxの起源3. Linuxの基本機能4. Li...
記事の構成1. 準備2. Java JDK8.0をインストールする3. 環境変数を設定する3. イン...
ダウンロードしてインストールします。まず、システムに MySQL または MariaDB があるかど...
1) プロセス 2) FSImageと編集NodeNode は HDFS の頭脳です。ファイルシステ...
前回の記事では、MySQL の置換関数 (Replace) とセグメンテーション関数 (SubStr...
目次1. ユーザーとユーザーグループの重要性1) ユーザーの存在意義2) ユーザーグループの重要性2...
以下のように表示されます。 1. ssh -v -p [ポート番号] [ユーザー名]@[IPアドレス...
テーブル名とフィールド–1. 学生リスト学生 (s_id、s_name、s_birth、s_sex)...
1-ドロップダウン選択ボックスのスタイル設定 - ドロップダウン リストを変更します。 2- <...
Vim は強力なフルスクリーン テキスト エディターであり、Linux/UNIX で最も一般的に使用...
この記事では、検証コードカウントダウンボタンを実装するためのVueの具体的なコードを例として紹介しま...
理由は、すべてのファイルが utf8 でエンコードされているためです。ファイルがインクルードされると...