VUE相关的复习记录-持续更新
一:axios 拦截器
拦截器可以分为两种 request.interceptors.request && axios.interceptors.response
发送请求之前拦截 request;接受请求拦截 response
request 可以添加请求验证,headers 和验证状态等
response 可以做数据格式化,和验证状态等
二:vuex 属性说明
state: 仓库 ,用来储存数据
getters: 读取states 的方法。
mutations: 同步更新状态
action: 异步更新状态
使用方法: 用dispatch 调用action, action 调用mutations 达到全局状态管理。
三:vue 的生命周期及每个阶段的区别与不同
create 创建 -------- 创建vue实例并初始化
mount 挂载 -------- 把vue实例和视图进行关联
update 更新 ------- 监听数据与视图的变化
destroy销毁 ------- 销毁实例
beforecreate:在实例初始化之后,数据观测(data observer)和event/watcher事件配置之前调用,里面的this指向实例
created:实例已经创建完成之后被调用。在这一步,实例已完成以下的配置;数据观测(data observer),属性和方法的运算,watch/event事件回调。然而,挂载阶段还没开始,还未与页面关联起来,$el属性目前不可见。可在这阶段进行一些初始化的操作(如ajax获取数据之类的)
beforemount:在挂载之前没调用,解析模板,把实例对象下的$el属性指向设置中的el参数指定的元素,这个解析后的模板还没有和$el进行绑定
mounted:挂载之后调用,把解析后的模板与页面元素进行绑定,用解析后的模板内容替换页面
beforeupdate在数据绑定之前被调用
updated在数据改变之后被调用,可以进行依赖于dom的操作(可以在这个阶段进行dom操作)
activated 被 keep-alive缓存的组件激活时调用。
deactivated 被keep-alive 缓存的组件停用时调用。
errorCaptured 当捕获一个来自子孙组件的错误时被调用。此钩子会收到三个参数:错误对象、发生错误的组件实例以及一个包含错误来源信息的字符串。此钩子可以返回 false 以阻止该错误继续向上传播
serverPrefetch serverPrefetch 的前身是 ssrPrefresh;这个钩子是用来处理 ssr 的;允许我们在渲染的过程中 “等待” 异步数据,可以在任何组件中使用,而不仅仅是路由组件
四:VUE的双向绑定
vue2.0 创建 Vue 实例时,vue 会遍历 data 选项的属性,采用数据劫持,通过Object.defineProperty() 来劫持各个属性的setter,getter,在数据变动时,结合发布者-订阅者模式的方式,发布消息给订阅者,触发相应的监听回调。
vue3 则是利用proxy代理对象进行的,不在需要遍历对象
五:webpack 基础知识
entry: 指定入口
output: 打包入口, 定义如何输出的选项
loader: 处理非JS文件
plugins: 插件配置
module: 模块相关配置
reslove: 解析模块可选项
六:vue相关 常见原理
computed: 计算属性。类似于watch。 当computed 依赖的状态发生改变时,变会通知computed,然后进行新的最终的值计算,如果发生改变则会触发watcher 进行重新渲染
watch: 监听器: 更多的作用是观察,不具有缓存性,在某些属性变化后,进行回调后的后续操作
nextTick: 由于js 是单线程的,所有同步任务都在主线程进行,除主线程外,还存在一个任务队列,当主线程结束后,便会执行这个任务队列.
data: 组件中,必须是一个函数。由于组件是可以复用的。类似于加上一个作用域,否则多组件会产生数据污染。
Vue 事件机制,手写$on(提交),$off(注销),$emit(),$once(执行一次)
七.如何理解MVVM原理
MVVM是Model-View-ViewModel的简写
- Model:数据模型层,用来处理业务逻辑和与数据库交互
- View:视图层,DOM
- ViewModel:视图模型层,用来处理Model层和View层的交互
Vue中VM的实现原理
- 响应式:Object.defineProperty()来做数据劫持和响应式
- 模板解析:Vue中的render函数,来将模版转换成虚拟DOM
- 将虚拟DOM渲染成html:通过updateComponent方法实现
八.Vue 数据响应式原理
九.vue中是如何检测数组变化 ?
十、为何Vue采用异步渲染?