溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

vue2.0/3.0中響應(yīng)式的原理是什么

發(fā)布時(shí)間:2021-05-11 15:12:51 來源:億速云 閱讀:160 作者:Leah 欄目:開發(fā)技術(shù)

本篇文章為大家展示了vue2.0/3.0中響應(yīng)式的原理是什么,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

vue是什么

Vue是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架,Vue與其它大型框架的區(qū)別是,使用Vue可以自底向上逐層應(yīng)用,其核心庫(kù)只關(guān)注視圖層,方便與第三方庫(kù)和項(xiàng)目整合,且使用Vue可以采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫(kù)開發(fā)復(fù)雜的單頁(yè)應(yīng)用。

step 一,vue2.0的響應(yīng)式原理

先看看官網(wǎng)的解釋:

當(dāng)你把一個(gè)普通的 JavaScript 對(duì)象傳給 Vue 實(shí)例的 data 選項(xiàng),Vue 將遍歷此對(duì)象所有的屬性,并使用 Object.defineProperty 把這些屬性全部轉(zhuǎn)為 getter/setter。Object.defineProperty 是 ES5 中一個(gè)無法 shim 的特性,這也就是為什么 Vue 不支持 IE8 以及更低版本瀏覽器的原因。

這些 getter/setter 對(duì)用戶來說是不可見的,但是在內(nèi)部它們讓 Vue 追蹤依賴,在屬性被訪問和修改時(shí)通知變化。這里需要注意的問題是瀏覽器控制臺(tái)在打印數(shù)據(jù)對(duì)象時(shí) getter/setter 的格式化并不同,所以你可能需要安裝 vue-devtools 來獲取更加友好的檢查接口。

每個(gè)組件實(shí)例都有相應(yīng)的 watcher 實(shí)例對(duì)象,它會(huì)在組件渲染的過程中把屬性記錄為依賴,之后當(dāng)依賴項(xiàng)的 setter 被調(diào)用時(shí),會(huì)通知 watcher 重新計(jì)算,從而致使它關(guān)聯(lián)的組件得以更新。

這里說一下自己的理解

其實(shí)看過api,源碼的人就不難知道,v-model,響應(yīng)式原理共分為兩層

  • 第一層,底層,就是es5的一個(gè)特性O(shè)bject.defineProperty通過getter,setter更新數(shù)據(jù),

  • 第二層,表現(xiàn)層,看過v-model原理的人都知道,v-model里邊有一個(gè)watcher,v-onwatcher監(jiān)聽到數(shù)據(jù)變化,v-on更新到視圖中。

step 二,vue3.0的響應(yīng)式原理

先看看官網(wǎng)的解釋:

vue2.0/3.0中響應(yīng)式的原理是什么

vue2.0/3.0中響應(yīng)式的原理是什么

這也就是vue3.0可以直接對(duì)對(duì)象屬性進(jìn)行刪除和修改的原因

vue2.0/3.0中響應(yīng)式的原理是什么

step 三,總結(jié)一下兩者的區(qū)別

----------- 3.0

(前兩者不在像2.0的時(shí)候需要進(jìn)行set才能更改??梢灾苯痈?

1,3.0 proxy 可以直接數(shù)組類型的數(shù)據(jù)變化

2,可以直接實(shí)現(xiàn)對(duì)象屬性的新增和刪除

3,3.0兼容ie12以上

4,組件上的v-model語(yǔ)法變更為v-bind.sync

5, 在同一元素上使用v-for和v-if的優(yōu)先級(jí)已經(jīng)更改

6,v-for上邊的key用法已經(jīng)更改

7,v-for的ref不在注冊(cè)為數(shù)組

8,destroyed,beforeDestroy生命周期被重命名為unmounted和beforeUnmount

9,<template>被視為普通元素,而不是渲染器內(nèi)部的內(nèi)容

這里貼一下官網(wǎng)發(fā)布的重大變更

vue2.0/3.0中響應(yīng)式的原理是什么

上述內(nèi)容就是vue2.0/3.0中響應(yīng)式的原理是什么,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

vue
AI