路由实例的其他配置
创建路由实例后,除了需要对其进行构造配置( routes )外,还可以进行以下配置:
- base 应用的基路径
类型: string 默认值: "/" # 如果整个单页应用服务在 /app/ 下,然后 base 就应该设为 "/app/"
- 全局配置 <router-link> 的默认『激活 class 类名』
类型: string 默认值: "router-link-active" // 即,链接激活时,默认添加了 router-link-active 的类名 // 自定义 export default new Router({ linkActiveClass:'active', routes:[] })
路由模式 mode
- hash: 使用 URL hash 值来作路由,支持所有浏览器( 包括不支持 HTML5 History Api 的浏览器 )
- history ?!: 依赖HTML5 History API和服务器配置
- abstract: 支持所有 JS 运行环境,如 Node 服务器端。若发现没有浏览器的 API,路由会自动强制进入该模式
类型: string 默认值: "hash" (浏览器环境) | "abstract" (Node.js 环境) 可选值: "hash" | "history" | "abstract"
滚动行为 scrollBehavior
使用前端路由,当切换到新路由时,想要页面滚到顶部,或者是保持原先的滚动位置,就像重新加载页面那样。
vue-router 能做到,而且更好,它可以自定义路由切换时页面如何滚动。
注意:该功能只在 HTML5 history 模式下可用
[ 基本原理 ] 创建路由实例后,使用 scrollBehavior 方法,该方法在前进、后退或切换导航时触发。
const router = new VueRouter({ routes: [...], scrollBehavior (to, from, savedPosition) { // return 期望滚动到哪个的位置 } }) # 参数说明:该方法返回 to 和 from 路由对象 # 第3个参数savedPosition,当且仅当点击浏览器的前进/后退按钮时才触发,返回滚动条的坐标 {x:num,y:num}
[ 示例 1 ] 如果返回一个布尔假的值,或者是一个空对象,那么,不会发生滚动
scrollBehavior (to, from, savedPosition) { return { x: 0, y: 0 } }
[ 示例 2 ] 点击导航进行切换时,滚动到页面顶部;通过前进、后退按钮进行切换时,保持坐标位置
const router = new VueRouter({ mode:'history', routes , scrollBehavior (to, from, savedPosition){ if(savedPosition){ return savedPosition; }else{ return {x:0,y:0} } } })
[ 示例 3 ] 还可以模拟滚动到锚点的行为
<div id="app"> <router-view></router-view> <br> <p> <router-link to="/" exact>index</router-link> <router-link :to="{name:'foo' ,hash:'#abc'}">Go to Foo</router-link> <router-link :to="{ name: 'bar' }">Go to Bar</router-link> </p> </div>const router = new VueRouter({ mode:'history', routes , scrollBehavior (to, from, savedPosition){ if(to.hash){ return { selector: to.hash } } if(savedPosition){ return savedPosition; }else{ return {x:0,y:0} } } })