以下内容是个人整理的v2知识点和一些概念,帮助自己记忆的。如有错误欢迎纠正。
vue
以数据驱动视图的渐进式MVVM框架
渐进式:循序渐进的使用vue,可选择性强,可以只是用其中的一些小功能,不必完全使用。
MVVM:vm视图层 通过接口从后台m层请求数据,vm视图层和view层实现数据的双向绑定。
MVC:m:mode v:view c:控制器 数据改变控制页面也改变
vue底层原理
-原理:Object.defineProperty 通过getter和setter来劫持数据,实现数据的双向绑定
-vue
优点:虚拟dom,数据驱动,双向绑定,模块化开发,浏览器兼容好
缺点:由于是js生成的虚拟dom,不利于seo爬虫获取,首屏加载相对于静态页慢
data为什么是一个函数
是因为作用域的问题,函数有自己的作用域,这样data就是专属于这个组件的。如果是对象的话会提升。多个组件的data就会产生冲突
什么是虚拟dom
就是js动态生成的dom叫做虚拟dom,虚拟dom不会引发回流和重绘,性能更好
不同场景使用不同,看是否要频繁的触发大面积内容的更新
diff算法和key的关系
diff算法:同层对比,只要发现不一致的节点,就用新的替换旧的。
因为diff算出来的dom没有跟踪标识,当循环出来的dom列表任意一个元素被修改,就无法找到。但是当加了key之后,就相当于给每个元素都加了唯一标识,当想要修改时直接修改对应元素就行,节省性能。key值必须是唯一的,不推荐使用下标和随机数
生命周期
四个阶段八个函数,最大的争议为在哪发起ajax请求。服务端渲染在created发起。服务端只有创建阶段。
创建阶段:
beforeCreate:骨架屏占位,日志上传
Created:发起ajax请求。
挂载阶段:
beforeMounted:对一些数据进行初始化
Mounted:发起ajax请求
更新阶段:
beforeUpdate:二次对更新的数据进行修改
Updated:只能观察到更新后的数据
卸载阶段:
beforeDestroy:清除常驻垃圾,对用户离开进行提示
Destroyed
-组件初次挂载生命周期
创建阶段和挂载阶段
-父组件和子组件的生命周期
父 beforeCreate created beforeMounted
子 beforeCreate created beforeMounted mounted
父 mounted beforeUpdate
子 beforeUpdate Updated
父 Updated beforeDestroy
子 beforeDestroy Destroyed
父 Destroyed
都是在before前阶段执行子组件的生命周期
- 子组件更新过程
父beforeUpdate -> 子beforeUpdate -> 子Updated -> 父Updated
- 父组件更新过程
影响到子组件 父beforeUpdate ->