需要 vue
2.x
与 vue-router2.x
。
导航默认行为类似手机APP的页面导航(A、B、C为页面):
- A前进到B,再前进到C;
- C返回到B时,B会从缓存中恢复;
- B再次前进到C,C会重新生成,不会从缓存中恢复;
- C前进到A,A会生成,现在路由中包含2个A实例。
!重要:vue-navigation在url中添加了一个key来区分路由。key的名称默认为VNK,可以修改。
npm i -S vue-navigation
或
yarn add vue-navigation
main.js
import Vue from 'vue'
import router from './router' // vue-router 实例
import Navigation from 'vue-navigation'
Vue.use(Navigation, {router})
// 启动你的应用...
App.vue
<template>
<navigation>
<router-view></router-view>
</navigation>
</template>
main.js
import Vue from 'vue'
import router from './router' // vue-router 实例
import store from './store' // vuex store 实例
import Navigation from 'vue-navigation'
Vue.use(Navigation, {router, store})
// 启动你的应用...
传入 store
后,vue-navigation
会向 store
注册一个Module(Module的默认名称为 navigation
),同时在页面跳转时会提交 navigation/FORWARD
或 navigation/BACK
或 navigation/REFRESH
。
只有route
是必须的.
Vue.use(Navigation, {router, store, moduleName: 'navigation', keyName: 'VNK'})
方法: [ on
| once
| off
]
事件类型: [ forward
| back
| replace
| refresh
| reset
]
参数( to
| from
) 的属性:
name
- 类型: string
- 描述: 路由的名称(包含key)
route
- 类型: object
- 描述: vue-route的路由信息对象
this.$navigation.on('forward', (to, from) => {})
this.$navigation.once('back', (to, from) => {})
this.$navigation.on('replace', (to, from) => {})
this.$navigation.off('refresh', (to, from) => {})
this.$navigation.on('reset', () => {})
在全局环境中使用 Vue.navigation
或在Vue实例中使用 this.$navigation
getRoutes()
获取路由记录cleanRoutes()
清空路由记录