Vue的數(shù)據(jù)驅(qū)動

好久沒有更新文章啦羞延, 以為一直不知道寫什么東西給大家分享。今天一個朋友問題vue的數(shù)據(jù)驅(qū)動是什么?所有我給大家說說我理解的vue的數(shù)據(jù)驅(qū)動竹习。
1、首先從字面意思理解下:數(shù)據(jù)驅(qū)動? 什么是數(shù)據(jù)驅(qū)動列牺? 我理解就是通過控制數(shù)據(jù)的變化來改變某物或某事整陌。
2、Vue的數(shù)據(jù)驅(qū)動中瞎领, 數(shù)據(jù)驅(qū)動什么泌辫? 就是說物或者事是什么? 這里的vue數(shù)據(jù)驅(qū)動的是視圖也就是DOM元素讓DOM的內(nèi)容隨著數(shù)據(jù)的改變而改變九默, 這里視圖(DOM)可以理解成上面的改變的某物或者某事
當我們知道vue數(shù)據(jù)驅(qū)動的字面意思的時候我們是不是在想vue是怎么實現(xiàn)數(shù)據(jù)驅(qū)動的呢震放?
首先我們看下下面的圖片(我自己畫的)


a

我不知道大家能不能看懂上面圖片,說的通俗一點就有一個人(數(shù)據(jù)驅(qū)動)在監(jiān)視一個叫(數(shù)據(jù))的家伙驼修,一旦這個家伙有任何舉動他講會告訴他的領(lǐng)導(視圖DOM),然后領(lǐng)導就會做出一些相應的變化殿遂;
回到話題就是這個人(數(shù)據(jù)驅(qū)動)怎么監(jiān)視的呢? 又是怎么把這些情況反映給領(lǐng)導(視圖DOM)的呢乙各?
首先我們定義一個數(shù)據(jù):

data(){
     return {
        data1:new Object(),
        data2:new Array()
     }
}
//view 視圖
<div>{{data1}}</div>
<div>{{data2}}</div>

我定義了一個對象和一個數(shù)組數(shù)據(jù)并且綁定到視圖勉躺,讓后我們改變一下data1和data2:

this.data1 = {
    a:2,
    b:3
}
this.data2 = [
    {
        name:'test',
        age:10
    },
    {
        name:'test1',
        age:11
    }
]

在vue中當改變數(shù)據(jù)的時候, 視圖中的數(shù)據(jù)也會相應改變觅丰。那到底中間做了什么呢饵溅?第一怎么監(jiān)聽數(shù)據(jù)變化?
注意:vue的數(shù)組類型只允許下面方法操作數(shù)組才會觸發(fā)視圖更新:

push()
pop()
shift()
unshift()
splice()
sort()
reverse()

數(shù)據(jù)監(jiān)聽變化:
先看vue的文檔怎么說的:
Vue 實例的數(shù)據(jù)對象。Vue 將會遞歸將 data 的屬性轉(zhuǎn)換為 getter/setter妇萄,從而讓 data 的屬性能夠響應數(shù)據(jù)變化蜕企。對象必須是純粹的對象 (含有零個或多個的 key/value 對):瀏覽器 API 創(chuàng)建的原生對象咬荷,原型上的屬性會被忽略。大概來說轻掩,data 應該只能是數(shù)據(jù) - 不推薦觀察擁有狀態(tài)行為的對象幸乒。

2.png

vue說遞歸將 data 的屬性轉(zhuǎn)換為 getter/setter,從而讓 data 的屬性能夠響應數(shù)據(jù)變化唇牧。這就是話不就是告訴我們他監(jiān)聽了data里面所有的數(shù)據(jù)嗎罕扎? 然后轉(zhuǎn)換為getter/setter? 這個時候是不是知道vue是怎么監(jiān)聽data數(shù)據(jù)啦丐重? 沒有錯vue監(jiān)聽data是通過defineProperty方法來監(jiān)聽的腔召。
大家看一下下面的defineProperty如果做到監(jiān)聽對象變化的:

let data = {
    "a":null
};
Object.defineProperty(data,"a",{
    get:()=>{
        console.log('獲取數(shù)據(jù)啦');
    },
    set:()=>{
        console.log('數(shù)據(jù)發(fā)生變化啦');
    }
})
//先回車在執(zhí)行下面代碼看變化
data.a;
//然后執(zhí)行下面代碼看變化
data.a = {b:1}

(大家可以復制到Google控制臺進行測試下)


效果圖.png

現(xiàn)在大家就應該知道vue數(shù)據(jù)監(jiān)聽怎么做了吧。(小提示:以后大家面試中如果被問題vue為什么不支持 IE8 及以下版本,你就可以說因為vue用了defineProperty方法來監(jiān)聽數(shù)據(jù)扮惦。 因為defineProperty只支持IE9及以上版本瀏覽器)


defineProperty兼容性.png

知道怎么監(jiān)聽數(shù)據(jù)啦臀蛛, 就知道這個人是用什么方式來監(jiān)視這個家伙啦(data數(shù)據(jù));然后就是怎么去告訴領(lǐng)導這個家伙(data數(shù)據(jù))的變化啦崖蜜;
(遺留問題:怎么去實現(xiàn)當真的數(shù)據(jù)變化去變化視圖呢浊仆? 大家是不是說可以操作dom啊,vue就不是直接操作DOM,這又是Vue一個神奇的地方那就是Virtual DOM(虛擬DOM樹)豫领。大家可以討論這個問題抡柿。謝謝大家)

:::皮一下

//直接操作dom
let data = {
    "a":null
};
Object.defineProperty(data,"a",{
    get:()=>{
        console.log('獲取數(shù)據(jù)啦');
    },
    set:(value)=>{
        document.querySelector('#app').innerHTML = JSON.stringify(value);
    }
})

_ | _ | _ | _ | _ | _
知識個人總結(jié),有不對的地方希望大家提出來等恐,大家共同進步洲劣。
如有問題,歡迎大家鼠锈,可以加Q討論哦:1366379285,加好友備注“簡書”

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末星著,一起剝皮案震驚了整個濱河市购笆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌虚循,老刑警劉巖同欠,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異横缔,居然都是意外死亡铺遂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門茎刚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來襟锐,“玉大人,你說我怎么就攤上這事膛锭×肝耄” “怎么了蚊荣?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長莫杈。 經(jīng)常有香客問我互例,道長,這世上最難降的妖魔是什么筝闹? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任媳叨,我火速辦了婚禮,結(jié)果婚禮上关顷,老公的妹妹穿的比我還像新娘糊秆。我一直安慰自己,他們只是感情好解寝,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布扩然。 她就那樣靜靜地躺著,像睡著了一般聋伦。 火紅的嫁衣襯著肌膚如雪夫偶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音蚕断,去河邊找鬼已慢。 笑死,一個胖子當著我的面吹牛说铃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播嘹履,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼腻扇,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了砾嫉?” 一聲冷哼從身側(cè)響起幼苛,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎焕刮,沒想到半個月后舶沿,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡配并,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年括荡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溉旋。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡畸冲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情召夹,我是刑警寧澤岩喷,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站监憎,受9級特大地震影響纱意,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鲸阔,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一偷霉、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧褐筛,春花似錦类少、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晃痴,卻和暖如春残吩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背倘核。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工泣侮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人紧唱。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓活尊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親漏益。 傳聞我的和親對象是個殘疾皇子蛹锰,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355