vue-router-cache-animate
使用 vue 的 keep-alive 和 transition 组件对路由进行快捷的动画和缓存设置。
demo
安装
npm i vue-router-cache-animateyarn add vue-router-cache-animate
使用
main.js
// 提供的移动端 slide-left、slide-right 动画,也可以自定义Vue
App.vue
<template> <div id="app"> <vue-router-cache-animate :caches="caches" :transitions="transitions"> <router-view /> </vue-router-cache-animate> </div></template><script>export default { data() { return { caches: [ { // 路由 name 和路由组件的 name(需保证相同) names: { include: ['A'], exclude: undefined }, // 在哪些路由上被缓存 cachedOn: { include: ['B', 'C'], exclude: undefined } } ], transitions: [ { name: 'slide-left', reverseName: 'slide-right', from: { // 路由 name include: ['A'], exclude: undefined }, to: { // 路由 name include: ['B', 'C'], exclude: undefined } } ] } }}</script>
Props
caches
缓存设置。
-
类型:
Array
-
默认值:
names: {}cachedOn: {}默认缓存所有路由。
-
示例:
{returncaches:// 路由 name 和路由组件的 name(需保证相同)names:include: 'A'// exclude: []// 在'B', 'C'路由上缓存路由组件 AcachedOn:include: 'B' 'C'// exclude: []names:include: 'B'// 在 'C' 路由上缓存路由组件 BcachedOn:include: 'C'}除了使用
include
包含,还可以使用exclude
排除。
transitions
动画设置。
-
类型:
Array
-
默认值:
[]
-
示例:
{returntransitions:// transition 组件的 name 选项// 从 'A' 路由到 'B', 'C' 路由使用 'slide-left' 动画name: 'slide-left'// 'B', 'C' 路由到 'A', 使用 'slide-right' 动画reverseName: 'slide-right'from:// 路由 nameinclude: 'A'// exclude: []to:// 路由 nameinclude: 'B' 'C'// exclude: []}
noCacheOnBack
后退时,是否缓存路由。
- 类型:
Boolean
- 默认值:
false
后退的情况:
- 浏览器后退按钮。
history.go(-n)
或者history.back()
。router.go(-n)
或者router.back()
。- 其他操作浏览器历史记录倒退的方法。
实现像手机端 app 一样前进刷新,后退缓存的效果。
路由切换时,会自动缓存前一个路由。当 后退 时,不缓存当前路由,这样当再次前往该路由时,会重新生成。
{ return noCacheOnBack: true }
当使用
history.pushState(state, title, path)
和history.replaceState
时,需要设置state
为一个对象,并提供一个唯一key
属性。例如:history这个
key
会被用来判断浏览器是前进还是后退。