赞
踩
如何理解MVVM?
如何实现MVVM?
你是否读过VUE源码?
答:
mvc: 数据层,视图层,控制层
mvvm:数据层,视图层,vm层
vm是数据层和视图层的桥梁,数据与视图分离
defineProperty
with(obj) {
alert(name) //obj.name
alert(age) //obj.age
}
注意 : 日常开发不要使用with函数
<div id="app">
<p>{{price}}</p>
</div>
//render with(this) { return _c{ //vm._c 'div', { attrs: {"id": "app"} }, [ _c['p',[_v(_s(price))]] //vm.price //vm._v 创建文本节点 //vm._c 创建dom标签 //vm._s toString ] } }
v-model双向绑定是怎么实现的?
答: 当vue的模板文件被解析成js的时候,它的本质是有一个get,一个set的。比如说input和list的双向绑定,当on input事件触发的时候,就会改变vm.title. 而title改变的时候,获取到title赋值给input的value
v-for怎么实现的?
答: _l()函数核心就是一个for循环。变成一个数组,做ul的子元素。
vm._c 和render 返回什么?
vm._c 实际上就类似snabbdom的h函数。虚拟dom
render 和patch
总结:
三要素: 双向绑定、模板解析、渲染
第一步:解析模板成render函数
第二步: 响应式开始监听
第三步: 首次渲染,显示页面,绑定依赖
第四步:data变化,触发rerender
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。