Vue2 x與Vue3 x的雙向繫結原理

2021-10-10 05:28:04 字數 1902 閱讀 3753

通過object.defineproperty()重新定義物件屬性的set方法get方法來實現的,從這個屬性中取值時會觸發get方法,改變這個屬性時會觸發set方法,所以我們只要將一些需要更新view的方法放在這裡面就可以實現data更新view了,而view更新data其實可以通過事件監聽實現

object.defineproperty()

返回值

被傳遞給函式的物件。

物件裡目前存在的屬性描述符有兩種主要形式:資料描述符訪問描述符。資料描述符是乙個具有值的屬性,該值可以是可寫的,也可以是不可寫的。訪問描述符是由getter 函式setter 函式所描述的屬性。乙個描述符只能是這兩者其中之一;不能同時是兩者

作用

* 可以給物件的乙個屬性設定兩個方法:

*get:從這個屬性中取值時會觸發get方法

*set:給這個屬性賦值時會觸發set方法

let obj =

// 給obj的name屬性設定兩個方法get&set

!-- 這裡相當於v

-->

"v">

<

/div>

"text" id=

"ipt"

>

<

/body>

// mvvm:

// 當v改變,m自動改變

// 當m改變,v自動改變

// 這裡相當於m

let data =

// 給data中的name屬性設定兩個方法get ,set

object.

defineproperty

(data,

'name',,

get:

function()

})// 給input新增乙個內容改變的之後會觸發的事件

document.

queryselector

('#ipt').

oninput

=function

(e)<

/script>

<

/html>proxy

用法:

let p =

newproxy

(obj,

,set

:function()

})

vue2 x和vue3 x實現雙向繫結的不同方式

在vue2.x中,實現雙向繫結,是使用object.defineproperty 方法對屬性設定get和set方法實現。object.defineproperty let obj object.defineproperty obj,name set自帶乙個引數 set value obj.name ...

vue3建立vue2 x專案

因為一些原因更新了node,再次安裝vue時,莫名的就vue3了。好吧,但是以前的專案還是vue2的,所以順便嘗試了下vue3建立vue2專案。首先是建立,以前是使用vue init建立,現在是vue create,然後在建立時,可以選擇2還是3 如果選擇3還有一些其它選項 比如是否安裝vue ro...

vue cli2 x和vue 3 x安裝區別

1.npm install vue cli g 安裝vue cli2.x腳手架 2.vue init webpack 使用vue cli2.x來建立乙個名稱為 的專案 3.cd 進入剛建立好的專案的路徑下 4.npm install 安裝依賴 5.npm run dev 啟動專案1.npm inst...