一个web应用路由定义的是否合理是判断这个应用是否合格的基础条件之一,在spa开发模式以前,前端开发基本不用考虑路由的定义这块基本都是后台在完成,但随着spa的推广先后端分离的大趋势下,前端路由定义的任务便落在的咱们前端开发者身上。本节咱们就来聊聊vue中vue-router的路由定义与配置。html
import Foo from './Foo.vue'
import Test from './Test.vue'
复制代码
const routes = [
{ path: '/foo', component: Foo },
{ path: '/bar', component: Test }
]
复制代码
let router = new VueRouter({
routes,
//默认为hash模式
mode:'history'
})
export default router
复制代码
const router = new VueRouter({
routes // (缩写) 至关于 routes: routes
})
const app = new Vue({
router
}).$mount('#app')
复制代码
interface RouteConfig = {
path: string,//路径
component?: Component,//路径对应加载对组件
name?: string, // 命名路由
components?: { [name: string]: Component }, // 命名视图组件
redirect?: string | Location | Function,//重订向对路由
props?: boolean | Object | Function,
alias?: string | Array<string>,//别名
children?: Array<RouteConfig>, // 嵌套路由的自路由
beforeEnter?: (to: Route, from: Route, next: Function) => void,//路由守卫
meta?: any,//其余项 挂载在this.$route上
// 2.6.0+
caseSensitive?: boolean, // 匹配规则是否大小写敏感?(默认值:false)
pathToRegexpOptions?: Object // 编译正则的选项
}
复制代码
路由模式:改变视图的同时不会向后端发出请求前端
mode:'history'//默认为hash模式
复制代码
经常使用api以下:vue
router.push
router.replace
router.go
router.back
router.forward
复制代码
路由导航守卫 vue-router中经常使用到路由导航守卫有beforeEach和afterEachweb
const router = new VueRouter({ ... })
router.beforeEach((to, from, next) => {
// ...
next()
})
复制代码
过渡动效:transition组件,使用方式以下vue-router
<transition>
<router-view></router-view>
</transition>
复制代码
滚动:vue-router有个能够控制路由跳转到新页面是的滚动位置的属性后端
const router = new VueRouter({
routes: [...],
scrollBehavior (to, from, savedPosition) {
// return 指望滚动到哪一个的位置
}
})
复制代码
注意: 这个功能只在支持 history.pushState 的浏览器中可用。详细请查看官方文档api
路由配置如今已是前端工程中必不可少的配置,合理的路由配置能大大提高用户体验度,而且还能改善项目结构。浏览器