MVVM及Vue渲染机制探索

2019-04-11  本文已影响0人  Shaw007
MVVM.png
MVVM - Model View ViewModel

总所周知,Vue是目前比较流行的MVVM前端框架,其核心在于VM。Vue通过MVVM架构将数据和视图进行了分离,将两者进行解耦,通过VM层构建两者的沟通渠道。其中View层通过事件绑定触发Model中data的更新,而Model中的数据可以通过数据绑定来及时针对数据的变化更新相应的视图。

Vue MVVM框架的三大要素

1. 响应式
问题: Vue如何监听到data的每个属性变化?

        var vm = {}
        var data = {
            name: 'zhangsan',
            age: 20
        }

        var key, value
        for (key in data) {
            (function (key) {
                Object.defineProperty(vm, key, {
                    get: function () {
                        console.log('get', data[key]) // 监听
                        return data[key]
                    },
                    set: function (newVal) {
                        console.log('set', newVal) // 监听
                        data[key] = newVal
                    }
                })
            })(key)
        }

2. 模板引擎
问题: Vue的模板如何被解析,指令如何处理?

3. 渲染
问题: Vue的模板如何被渲染成html,以及渲染过程?

vue的整个实现流程

问题: 为什么要监听get,不直接监听set?
data中有很多属性,会被用到的走get,不会用到的不走。避免不必要的重复渲染

上一篇下一篇

猜你喜欢

热点阅读