说在之前的话
- 一般来说,我们会选择
const vm=new Vue(options)
来包装vue,原因是因为这是Vue作者习惯我们会沿用。
- vm主要是封装了视图操作,包括有
- 数据读写(vm不管AJAX)
- 事件绑定
- DOM更新
- vm构造函数是Vue,所属类也是Vue
- options是vue参数,意思是选项/构造选项
options
包括以下大类
- 数据
类型:Object | Function
限制:组件的定义只接受 function。
详细:
Vue 实例的数据对象。Vue 将会递归将 data 的属性转换为** getter/setter**,从而让 data 的属性能够响应数据变化。对象必须是纯粹的对象 (含有零个或多个的 key/value 对):浏览器 API 创建的原生对象,原型上的属性会被忽略。大概来说,data 应该只能是数据 - 不推荐观察拥有状态行为的对象。
一旦观察过,你就无法在根数据对象上添加响应式属性。因此推荐在创建实例之前,就声明所有的根级响应式属性。
实例创建之后,可以通过 vm.data.a。
以** _ 或 data._property 的方式访问这些属性。个人理解是这些是为了避免和api重名才加的
当一个组件被定义,data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 data 函数,每次创建一个新实例后,我们能够调用 data 函数,从而返回初始数据的一个全新副本数据对象。
如果需要,可以通过将 vm.$data 传入 JSON.parse(JSON.stringify(...)) 得到深拷贝的原始数据对象。
如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,如果B也跟着变了,说明这是浅拷贝,拿人手短,如果B没变,那就是深拷贝,自食其力。等下另外找一篇文章讲清楚。
类型
多种类型类型分类
生命周期钩子
钩子是可插入的点
生命周期如图
生命周期
el和data
el也就是挂载点,可以让
vue的7个异变api
- pop()
- shift()
- unshift()
- splice()
- sort()
- reverse()
- push()
这些负责了他的增删,使其可以监听到所有的对象,不用额外在监听
网友评论