1.路由守卫有哪几种
- 全局守卫:beforeEach(一般用来做权限判断跳转的时候用到,可写在router.js文件下面)
- 后置守卫:afterEach(一般是在跳转到页面的时候执行)
- 全局解析守卫:beforeResolve(他的执行顺序是在beforeEach之后,afterEach之前)
- 路由独享守卫:beforeEnter(在路由配置页面单独给路由配置的一个守卫)
- 组内路由守卫:beforeRouteEnter,beforeRouteUpdate,beforeRouteLeave(进入beforeRouteEnter与离开beforeRouteLeave更新beforeRouteUpdate)
-
参数说明:
- to:要进入的目标 路由对象
- from:当前导航正要离开的路由
- next:写每一步都要执行next,否则页面会空白,也可以给next写值,例如(next(),next(false),next('error'));
2.第一次页面加载会触发哪几个钩子?
- 第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子
3.什么是$nextTick?
- 场景:vue是异步渲染的框架,react也是,data改变之后,dom不会立刻渲染,$nextTick会在dom渲染之后被触发,以获取最新dom节点
4.vue组件中data为什么函数返回一个对象
- 组件中的data写成一个函数,数据以函数返回值形式定义,这样每复用一次组件,就会返回一份新的data。如果单纯的写成对象形式,就使得所有组件实例共用了一份data,造成了数据污染。
5.双向数据绑定的理解?
- vue采用数据劫持结合发布者-订阅者模式的方式,通过 Object.defineProperty劫持data属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。