前端面试题

MVVM 和 VUE 详解

2019-08-07  本文已影响0人  简单tao的简单

说一下使用Jquery和使用框架的区别

说一下对MVVM的理解

VUE、MVVM框架的三要素

vue中如何实现响应式

Object.defineProperty(obj, prop, desc)的作用就是直接在一个对象上定义一个新属性,或者修改一个已经存在的属性
模板中没有的数据,不会走get监听,所以也不会走set监听,Object.defineProperty的原则是走get才会走set,防止无用的数据重复渲染。

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)
}

vue中如何解析模板

//模板
    <div id="app">
        <p>{{price}}</p>
    </div>
//render函数
        function render() {
            with(this) {  // this 就是 vm
                return _c(
                    'div',
                    {
                        attrs: {'id': 'app'}
                    },
                    [
                        _c('p', [_v(_s(price))])
                    ]
                )
            }
        }
//在vue源码中搜索code.render,然后alert(code.render)可以看render函数

问题解答

vue的整个实现流程

  1. 解析模板成render函数
  2. 响应式开始监听
  3. 首次渲染,显示页面,且绑定依赖
  4. data属性变化,触发rerender
上一篇下一篇

猜你喜欢

热点阅读