Vue双方向データバインディング(MVM)の原理


MVVM
MVMはModel-View-View Modelの略語であり、フロントエンドに基づいて開発されたアーキテクチャモードであり、コアはViewとView Modelの双方向データバインディングを提供することであり、これによりView Modelの状態が自動的にViewに伝達されるようになります。

Vue.jsはMVVMスタイルの双方向データ結合を提供するJavascriptライブラリで、View層に集中しています。その核心はMVVMのVM、つまりView Modelです。View ModelはViewとModelを接続し、ビューとデータの整合性を保証します。このような軽量級のアーキテクチャは先端の開発をより効率的で便利にします。
データハイジャック
vue.jsはデータハイジャック結合リリース者-購読者モードを採用して、Object.definePropertyを通じて各属性のsetterをハイジャックし、getterはデータ変動時に購読者にメッセージを発表し、相応の傍受フィードバックをトリガする。
Object.defineProperty()
Object.defineProperty()メソッドは、オブジェクトに直接新しい属性を定義したり、オブジェクトの既存の属性を変更したりして、このオブジェクトに戻ります。
Object.defineProperty(obj,prop,descriptor)
パラメータ:
  • obj――属性を定義する対象。
  • prop--定義または変更する属性の名前。
  • descriptor-定義または修正される属性記述子。
  • 戻り値:関数に渡されるオブジェクトです。
    MVVMのデータ双方向バインディングステップ
    1、データモニターObserverを実現し、データオブジェクトのすべての属性をモニターすることができます。変動があれば最新の値を入手して、購読者に通知します。
    2、命令解析器Compleを実現し、各要素ノードの命令をスキャンして解析し、コマンドテンプレートに従ってデータを置換し、対応する更新関数をバインドする。
    3、Watchを実現し、ObserverとCompleを接続するブリッジとして、属性ごとの変動の通知を購読して受信し、コマンドバインディングの対応するコール機能を実行して、ビューを更新することができます。
    4、MVVM入口関数は、以上の3つを整合する。
    流れは以下の通りです。

    Observerを実現
    私たちはObeject.definePropertyを利用して属性変動を監督することができることを知っています。そうすると、observeのデータオブジェクトを再帰的に巡回する必要があります。サブ属性オブジェクトの属性を含めて、setterとgetterを加えます。
    このようにすると、この対象のある値に値を付けると、setterが触発され、データの変化を傍受することができます。
    Compleを実現
    compleは主にテンプレートコマンドを解析して、テンプレートの変数をデータに置き換えて、レンダリングページビューを初期化し、各コマンドに対応するノードをバインドして更新関数を更新し、モニターデータの購読者を追加します。データが変更されたら、通知を受けます。

    Watchを実現
    Watch購読者はObserverとCompleの間の通信の架け橋として、主にやっていることは:
    1、自身のインスタンス化時に属性購読器(dep)に自分を追加する
    2、自分自身にアップロードの方法が必要です。
    3、属性変動dep.notice()の通知を待っている時に、自分のupadate()の方法を呼び出して、Compleに結合されたフィードバックを触発すると、功成り身を退く。
    MVVM実現
    MVMはデータバインディングの入口として、Observer、Comple、Watchの3つを統合し、Observerを通じて自分のmodelデータの変化をモニターし、Compleを通じてテンプレートコマンドを解析し、最終的にはWatchを利用してObserverとCompleの間の通信橋を持ち上げます。
    データの変化に達する->ビューの更新;ビューのインタラクティブ変化(input)->データmodelの変更による双方向バインディング効果です。
    以上がVue双方向データバインディング(MVM)の原理の詳細です。Vue双方向データバインディング(MVM)に関する資料は他の関連記事に注目してください。