什么是Vue的MVVM模式

vue中的MVVM模式
即Model-View-ViewModel。

Vue是以數據為驅動的,Vue自身將DOM和數據進行綁定,一旦創(chuàng)建綁定,DOM和數據將保持同步,每當數據發(fā)生變化,DOM會跟著變化。

ViewModel是Vue的核心,它是Vue的一個實例。Vue實例時作用域某個HTML元素上的,這個HTML元素可以是body,也可以是某個id所指代的元素。

DOM Listeners和Data Bindings是實現雙向綁定的關鍵,實現的原理是Object.defineProperty中的get和set方法,及消息訂閱模式。DOM Listeners監(jiān)聽頁面所有View層DOM元素的變化,當發(fā)生變化,Model層的數據隨之變化;Data Bindings監(jiān)聽Model層的數據,當數據發(fā)生變化,View層的DOM元素隨之變化。

Object.defineProperty詳解
Object.defineProperty(obj, prop, descriptor)
obj: 目標對象 -必填
prop: 要定義的屬性或目標方法 -必填
descriptor: 描述,是一個對象,以下詳解:
descriptor(value, writable, configurable, enumerable, get , set)
value: 屬性的值
writable: 屬性的值是否可以更改,默認false
configurable: 總開關,設置為false后不能修改value、writable、configurable
enumerable:能否在for..in 或者Object.keys中循環(huán)出來。

在descriptor中不能同時設置(value、writable) 和 (get、set),否者會報錯,
就是說想用(get 和 set),就不能用(wriable 或 value中的任何一個)

下面舉例說明一下

       var book = {
            _year: 2017,
            edtion: 1
        }
        // get set
        Object.defineProperty(book, 'year', {
            get: function () {
                return this._year; //必須返回
            },
            set: function (newValue) {
                this._year = newValue;
                this.edtion += 1;
                // dosomething
            }
        });
        // writable value
        book.year = 2018;
        console.log(book.edtion); //2
        Object.defineProperty(book,'_year', {
            writable: false,
            value: 2018
        })
        book._year = 2019 //沒報錯
        console.log(book._year) // 2018,說明值不會改變
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨立版本,Vue即被注冊為全局變量,可以在頁面使用了。 如果希望搭建...
    Awey閱讀 11,309評論 4 129
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內容,還有我對于 Vue 1.0 印象不深的內容。關于...
    云之外閱讀 5,187評論 0 29
  • 來自:參 考 原 文 對象是由多個名/值對組成的無序的集...
    wyude閱讀 1,358評論 1 7
  • 文章參考阮一峰:MVC,MVP 和 MVVM 的圖示深入響應式原理 最近工作中一直在使用Vue這一款框架作為開發(fā)工...
    大春春閱讀 33,391評論 4 27
  • 在菜單中選擇插入符號,然后字體Wingdings2,字符代碼82。第一次使用后,該字符會出現在常用字符中。
    HenryYUE閱讀 1,052評論 0 50

友情鏈接更多精彩內容