Vue及雙向繫結

2021-10-04 02:44:46 字數 1806 閱讀 9968

1 ,易用(使用成本低)

2 ,靈活(生態系統完善,試用於任何規模的專案)

3 ,高效(體積小,優化好,效能好)

vue是乙個mvvm的js 框架,但是,vue 的核心庫只關注檢視層,開發者關注的只是m-v的對映關係,也就是說我們就是關心的對映關係。

1 mvc的之間關係:通訊都是單向的。

view 傳送指令到controller,

controller完成業務邏輯之後要求model改變狀態

model 將新的資料傳送到view,使用者得到反饋

2 mvp之間的關係、:mvp模式將controller改名為presenter,同時改變了通訊方向。

各部分之間的通訊,都是雙向的

view與model不發生關係,通過presenter傳遞

view非常薄,不會部署任何業務邏輯,稱為「被動式圖」(passive view),既沒有任何主動性,而presenter非常厚,所有的業務邏輯都部署在這裡

3 mvvm 模式將presenter改名為viewmodel,基本上與mvp模式完全一致,唯一區別是,它採用的是雙向繫結(data-binding),view的變動,自動反應在viewmodel,反之亦然。angular和ember都採用這種模式

// 建立乙個vue的例項

// 宣告一條資料,然後用頁數的模板語法將其渲染到介面中 (宣告式渲染)

// el data methods是固定寫法

var vm=new vue(,

methods:

})**vue 中按照mvvm的架構去進行實現的

mvvm

m: model 模型

v: view 檢視

vm: viewmodel 檢視模型**

當model層的資料發生改變,為什麼vm就可以知道資料發生了變化

也就是說vue的雙向資料繫結原理是什麼:

1 vue在建立vm的時候,會將資料配置到例項中。然後通過 object.defineproperty 方法,

為資料動態的新增getter和setter方法

**(object.defineproperty(obj, prop, descriptor)**

obj:需要定義屬性的物件

prop:需要定義的屬性

descriptor:屬性的描述描述符

返回值:返回此物件)

2 當獲取資料的時候,會觸發對應的getter方法,當設定資料的時候,觸發對應的setter方法

3 然後當setter方法觸完成的時候,內部會進一步的觸發 watcher (觀察者),,當資料改變了,檢視則更新操作完畢。

// 建立vue例項

// 先在外部建立乙個data

// let data1=

// new vue()

// console.log(data1)//object

var obj = {}

// 設定乙個中間變數承接內容

let middel=100

object.defineproperty(obj, 'prop', ,

set(val)

})// 在這裡列印的順序是看自己是獲取還是設定

console.log(obj.prop)//獲取物件的屬性的時候,會呼叫自身的get方法

obj.prop=11 //設定物件的屬性的時候,會呼叫自身的set方法

// console.log(obj.prop)

Vue雙向繫結原理及vue cli

vue.js介紹 1.vue.js的mvvm框架 2.什麼是vue.js vue.js是乙個輕量級的mvvm框架 中文官網 3.對比react angular vue.js更輕量級,gzip只有20k vue.js更容易上手,學習曲線平穩 吸取兩家之長,借鑑了angular的指令和react的指令化...

vue雙向繫結原理及實現

資料雙向繫結原理簡單概括的話就是 view層影響model層是通過對 keyup 等事件的監聽。model層影響view層是通過object.defineproperty 方法劫持資料並結合發布訂閱者模式的方式來實現資料的雙向繫結。根據原理圖來介紹整個流程 1 首先使用object.definepr...

Vue雙向繫結

把乙個普通物件 a 傳給 vue 例項作為它的 data 選項,vue.js 將遍歷它的屬性,用object.defineproperty 將它們轉為 getter setter,如圖綠色的部分所示。每次使用者更改data裡的資料的時候,比如a.b 1,setter就會重新通知watcher進行變動...