一、keep-alive
当在组件之间切换时,想要保持组件的状态,可以使用keep-alive元素将组件包裹起来,这样可以保持原来组件的状态
但有一个问题是:
被keep-alive缓存的组件的created,mounted这些生命周期钩子函数只会执行一次,后面会失效,所以如果keep-active包裹的组件涉及到ajax请求或dom操作的话,可以使用keep-alive的两个钩子函数:
activated:created-->mounted-->activated,后面只会执行activated
deactivated:页面退出的时候会触发deactivated,当再次前进或者后退的时候只触发activated
二、vue双向绑定的原理
原理主要是通过数据劫持Object.defineProperty和发布订阅模式实现的,通过Object.defineProperty监听数据发生变化然后通知订阅者,订阅者触发响应的回调
三、期待vue3.0有什么功能或改进
vue 2.0版本的双向数据绑定的原理是Object.defineProperty,它的缺点是无法监听索引修改数组的值的变化
四、vue定时器要怎么销毁
beforeDestroy
五、<template></template>有什么用
当做一个不可见的包裹元素,减少不必要的DOM元素,整个结构会更加清晰。
六、vue的核心是什么
1、数据驱动
- 使用的是MVVM的思想
- 数据是响应式的
- 当M改变的时候,通知vm,来同步修改v
2、virtual DOM 数据->虚拟dom->dom
- 对象 描述一个dom元素
3、组件化
- 父向子
- 子向父
- 兄弟组件
- vuex
七、第一次加载页面会执行哪几个钩子函数
- beforeCreate, created, beforeMount, mounted
- 当数据改变的时候 beforeUpdate updated
- 当组件销毁的时候 beforeDestory desgtoryed
八、在什么场景下会用到嵌套路由
- 举个例子,例如做个管理系统,顶部栏和左侧菜单栏是全局通用的,那就应该放在父路由,而右下的页面内容部分放在子路由
九、
router有什么区别
1 route
代表当前路由,包括path、params、hash、query等
2 router
整个vue实例下的路由对象(router对象)
可以进行页面的跳转,this.router.go(-1)
十、捕获所有路由或 404 Not found 路由
捕获所有路由:如果想匹配任意路径,可以使用通配符*
404 Not found 路由:写在所有路由得最后面,如果未匹配到路由,就会显示404页面
十一、active-class 是哪个组件的属性
router-link的一个属性,可以用来设置激活的路由的类名,如果不设置,默认的类名叫router-link-active