1.详细说明$route 和$router 的区别?
$route:获取路由信息 指当前路由实例跳转到的路由对象
包括:
$route.path 字符串,等于当前路由对象的路径,会被解析为绝对路径,如/home/ews
$route.name 当前路由的名字,如果没有使用具体路径,则名字为空
$route.router 路由规则所属的路由器
$route.matchd 数组,包含当前匹配的路径中所包含的所有片段所对象的配置参数对
象
$route.query 对象,包含路由中查询参数的键值对。会拼接到路由 url 后面
$route.params 对象,含路有种的动态片段和全匹配片段的键值对,不会拼接到路由
的 url 后面
$router:获取路由整个实例 指整个路由实例,可操控整个路由
通过‘$router.push’往其中添加任意的路由对象 钩子函数等
2.<keep-alive></keep-alive>的作用是什么?什么场景使用?常用属性?生命周期?
keep-alive可以实现组件缓存,当组件切换时,主要用于保留组件状态或避免重新渲染
它有以下两个作用:
缓存有状态的组件,避免组件在切换时被重新渲染;
在缓存的组件被激活时触发 activated 钩子函数,在缓存的组件被停用时触发 deactivated 钩子函数。
使用 Keep-alive 可以提高组件的性能,尤其是在组件状态比较复杂或需要较长时间计算的情况下,通过缓存组件避免重复渲染,提高应用的性能。
常用的两个属性include/exclude,允许组件有条件的进行缓存
actived 在keep-alive中使用,缓存组件激活
deactived 在keep-alive中使用,缓存组件不激活
使用场景:
比如有一个列表和一个详情,那么用户就会经常执行打开详情=>返回列表=>打开详情...
这样列表和详情都是一个频率很高的页面,那么就可以对列表组件使用<keep-alive></keep-alive>进行缓存,这样用户每次返回列表的时候,都能从缓存中快速渲染,而不是重新渲染