フレームのVue記事のV. [フロントエンドの概要]

1. nextTick

 

次回のタイム更新サイクルは、あなたがより多くを得るために使用できるコールバック遅れの後にDOMが実行し、新たな後 DOMの状態を

 

デフォルトの新しいバージョンがある mincrotasks、V-の使用を加熱すること

実装のマクロタスクマクロタスクタスク:

  setImmediate / MessageChannel /のsetTimeout

 

 

2.⽣ライフサイクル

INI トン

 

initLifecycle /イベント、さまざまな属性のVMをマウントします

callHook:beforeCreated:インスタンスが作成しました

initInjection / initState:初期化注STARTと応答データ

作成:作成し、プロパティがバインドされているしかしまだ⽣リアルに dom`

マウントに⾏要素:$ EL / VM $マウント()。

です、テンプレート:解決するための機能をレンダリング

  * .vueは、ファイル メンバーを:VUE-ローダがします する <テンプレート> コンパイル 翻訳 レンダリングする機能

テンプレートをコンパイルする前に/マウント:beforeMountを

実行し、機能をレンダリングする真に⽣ DOM、およびのために変更し、DOMツリー内の

マウント:マウントされたコンポーネントのアップデートを

実行変更の差分アルゴリズムを、⽐ではありませんトリガに必要 UI更新

flushScheduleQueue

watcher.before:トリガーのBeforeUpdateのフックサブメニュー - watcher.run():実行中ウォッチャー

すべての依存関係がUIの更新された通知、通知のトリガ更新フックサブメニューを:コンポーネントが更新

actived /非活性化(キープアライブ):コンポーネントの破壊されない、キャッシュ、アクティブ化および非アクティブ化

破壊

  beforeDestroy:破壊が始まります

  身体の自己破壊と破壊のサブメニューコンポーネントとイベントリスナー再帰

    削除():ノードの削除

    watcher.teardown():空の依存

    。Vmがオフ()$:アンバンドリングリッスン

破壊された:トリガーフックサブメニューを完了した後

 

⾯では、我々は直接コードの形式でVUEの初期化を完了するために、VUEの簡単な一種のライフサイクルであります

 

 

新しい新しいヴュー({})

 

// 初期のインスタンスのVueの

関数_init(){ 

// 実装プロパティ

initLifeCycle(VM)

// 初期化イベントシステム、フックサブメニューのような機能

initEvent(VM)

// コンパイラスロット、vノードinitRender(VM)

/ / トリガーフックサブメニュー

callHook(VM、 'beforeCreate' 

// 注入機能を追加

initInjection(VM)

// 完了データ応答小道具/データ/ウォッチ/演算/メソッドInitState(VM)

// 機能を提供追加

initProvide(VM)を

/ / トリガフックサブメニュー

callHook(VM、 '作成者' 



 

// ノードをマウント

IF (VM。options.el $){VM。$ MOUNT(VM。options.el $)

}

} 

 

//は、ノード実装マウント

機能mountComponent(VM){ 

// 取得機能レンダリング

IF(!この.options.render){ 

// レンダリングするテンプレートを

// Vue.compile compileToFunctions LET = {} = compileToFunctionsレンダリング()これ。 =レンダリングoptions.render 

} 

// トリガフックサブメニュー

callHook( 'beforeMounte' 

// 初期化ビューア

// レンダリングレンダリングVDOM、

VDOM = vm.render()

// 更新:DOMはpatchsうち、実際の差分に応じてマウントvm._update(VDOM)

// トリガフックサブメニュー

callHook(VMは、 'マウント' 

}

 

// 更新ノード器具

目的球queueWatcher(ウォッチャー){nextTick(flushScheduleQueue)

} 

 

// 空の待ち行列

機能flushScheduleQueue(){ 

// 反復すべての変更キュー

のための(){ 

// のBeforeUpdate watcher.before()

 

// 依存部分更新ノードwatcher.update()callHook( 'を更新')

} 

} 

 

// 破壊実装例

Vue.prototype。Destoryは$ = 関数(){ 



// トリガフックサブメニュー

callHook(VM、 'beforeDestory' 

// 自動ボディノードとサブメニュー

削除()

// 依存削除

)(watcher.teardownを

// リスナー削除

)。$オフ(VMを

// トリガフックサブメニュー

callHook(VMは、 'destoryed' 

}

 

 

J

3.Proxy相に⽐のDefineProperty利点

 

変更の配列を監視することができます

あなたトラバーサルの深さを監視する必要はありません

データを聞かせ= {:1 } 

ましょうreactiveData = 新しいプロキシ(データ、{ 
    GET:機能(ターゲット、名){ 

    // ... 

    }、

    // ... 

})

 

 

4.ため、ルータ

モード 

  ハッシュ

  歴史

 

ジャンプ

  この。$ router.push()

  <=「へのルータのリンク」> </ルータリンク>

 

プレースホルダ

  <ルータビュー> </ルータビュー>

 

5. vuex

 

状態:加重状態センター

変異:ステータス変更

アクション:非同期ステータス変更

ゲッター:取得ステータス

モジュール:状態を複数の2つのモジュール、管理が容易

おすすめ

転載: www.cnblogs.com/yongbin668/p/12194734.html