最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

Vue底層實現(xiàn)原理總結

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:19:26
文檔

Vue底層實現(xiàn)原理總結

Vue底層實現(xiàn)原理總結:前言 最近在研究 剖析Vue原理&實現(xiàn)雙向綁定MVVM 這篇文章,一邊學習一邊總結一下自己的思考。 Vue是一個典型的MVVM框架,模型(Model)只是普通的JavaScript對象,修改它則視圖(View)會自動更新。這種設計讓狀態(tài)管理變得非常簡單而直觀。那么Vue是如何
推薦度:
導讀Vue底層實現(xiàn)原理總結:前言 最近在研究 剖析Vue原理&實現(xiàn)雙向綁定MVVM 這篇文章,一邊學習一邊總結一下自己的思考。 Vue是一個典型的MVVM框架,模型(Model)只是普通的JavaScript對象,修改它則視圖(View)會自動更新。這種設計讓狀態(tài)管理變得非常簡單而直觀。那么Vue是如何

前言

最近在研究 剖析Vue原理&實現(xiàn)雙向綁定MVVM 這篇文章,一邊學習一邊總結一下自己的思考。

Vue是一個典型的MVVM框架,模型(Model)只是普通的JavaScript對象,修改它則視圖(View)會自動更新。這種設計讓狀態(tài)管理變得非常簡單而直觀。那么Vue是如何把模型和視圖建立起關聯(lián)的呢?

實現(xiàn)原理概述

這是前言提到的文章里的代碼,一段典型的體現(xiàn)了Vue特點的代碼:

<div id="mvvm-app">
 <input type="text" v-model="word">
 <p>{{word}}</p>
 <button v-on:click="sayHi">change model</button> //點擊這個button,word的值會發(fā)生改變
</div>

<script src="./js/observer.js"></script>
<script src="./js/watcher.js"></script>
<script src="./js/compile.js"></script>
<script src="./js/mvvm.js"></script>
<script>
 var vm = new MVVM({
 el: '#mvvm-app',
 data: {
 word: 'Hello World!'
 },
 methods: {
 sayHi: function() {
 this.word = 'Hi, everybody!';
 }
 }
 });
</script>

ue實現(xiàn)這種數(shù)據(jù)雙向綁定的效果,需要三大模塊:

Observer:能夠對數(shù)據(jù)對象的所有屬性進行監(jiān)聽,如有變動可拿到最新值并通知訂閱者

Compile:對每個元素節(jié)點的指令進行掃描和解析,根據(jù)指令模板替換數(shù)據(jù),以及綁定相應的更新函數(shù)

Watcher:作為連接Observer和Compile的橋梁,能夠訂閱并收到每個屬性變動的通知,執(zhí)行指令綁定的相應回調函數(shù),從而更新視圖

Observer

Observer的核心是通過Obeject.defineProperty()來監(jiān)聽數(shù)據(jù)的變動,這個函數(shù)內部可以定義setter和getter,每當數(shù)據(jù)發(fā)生變化,就會觸發(fā)setter。這時候Observer就要通知訂閱者,訂閱者就是Watcher。

Watcher

Watcher訂閱者作為Observer和Compile之間通信的橋梁,主要做的事情是:

  1. 在自身實例化時往屬性訂閱器(dep)里面添加自己
  2. 自身必須有一個update()方法
  3. 待屬性變動dep.notice()通知時,能調用自身的update()方法,并觸發(fā)Compile中綁定的回調

Compile

Compile主要做的事情是解析模板指令,將模板中的變量替換成數(shù)據(jù),然后初始化渲染頁面視圖,并將每個指令對應的節(jié)點綁定更新函數(shù),添加監(jiān)聽數(shù)據(jù)的訂閱者,一旦數(shù)據(jù)有變動,收到通知,更新視圖。

總結

聲明:本網(wǎng)頁內容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Vue底層實現(xiàn)原理總結

Vue底層實現(xiàn)原理總結:前言 最近在研究 剖析Vue原理&實現(xiàn)雙向綁定MVVM 這篇文章,一邊學習一邊總結一下自己的思考。 Vue是一個典型的MVVM框架,模型(Model)只是普通的JavaScript對象,修改它則視圖(View)會自動更新。這種設計讓狀態(tài)管理變得非常簡單而直觀。那么Vue是如何
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top