类型: string 默认值: "a" 有时候想要 <router-link> 渲染成某种标签,例如 <li>。 因而咱们使用 tag prop 类指定何种标签,一样它仍是会监听点击,触发导航。
<router-link to="/foo" tag="li">foo</router-link> <!-- 渲染结果 --> <li> foo </li>
<router-view> 组件是一个 functional 组件,渲染路径匹配到的视图组件。<router-view> 渲染的组件还能够内嵌本身的 <router-view>,根据嵌套路径,渲染嵌套组件。
类型: string
默认值: "default"
若是 <router-view>设置了名称,则会渲染对应的路由配置中 components 下的相应组件。查看 命名视图 中的例子。
类型: Array<RouteConfig> RouteConfig 的类型定义:
declare type RouterConfig = { path: string; component?:Component; // 引用组件的名字 name?: string; //命名路由 components: {[name:string]:Component}; // 命名视图组件 redirect: string | location | Function; // 重定向 props: string | boolean | Function; // 传参 alias: string | Array<string>; // 别名 children: Array<RouterConfig>; // 嵌套路由 beforeEnter?: (to: Route, from: Route, next: Function) => void; meta?: any; // 2.6.0+ caseSensitive?: boolean; // 匹配规则是否大小写敏感?(默认值:false) pathToRegexpOptions?: Object; // 编译正则的选项 }
类型: string 默认值: "hash" (浏览器环境) | "abstract" (Node.js 环境) 可选值: "hash" | "history" | "abstract" 配置路由模式: hash: 使用 URL hash 值来做路由。支持全部浏览器,包括不支持 HTML5 History Api 的浏览器。 history: 依赖 HTML5 History API 和服务器配置。查看 HTML5 History 模式。 abstract: 支持全部 JavaScript 运行环境,如 Node.js 服务器端。若是发现没有浏览器的 API,路由会自动强制进入这个模式。
类型: string 默认值: "/" 应用的基路径。例如,若是整个单页应用服务在 /app/ 下,而后 base 就应该设为 "/app/"。
类型: string 默认值: "router-link-active" 全局配置 <router-link> 的默认“激活 class 类名”。参考 router-link。
类型: string 默认值: "router-link-exact-active" 全局配置 <router-link> 精确激活的默认的 class。可同时翻阅 router-link。
类型: Vue instance
配置了 router 的 Vue 根实例
类型: string
路由使用的模式。
类型: Route
当前路由对应的路由信息对象。
函数签名: router.beforeEach((to, from, next) => { /* must call `next` */ }) router.beforeResolve((to, from, next) => { /* must call `next` */ }) router.afterEach((to, from) => {})
增长全局的导航守卫。参考导航守卫。 在 2.5.0+ 这三个方法都返回一个移除已注册的守卫/钩子的函数。
一个路由对象表示当前激活的路由的状态信息,包含了当前URL解析获得的信息,还有URL 匹配到的路由记录( route records)。
路由对象是不可变的,每次成功的导航后都会产生一个新的对象。javascript
路由对象出如今多个地方: 在组件内,即 this.$route 在 $route 观察者回调内 router.match(location) 的返回值
导航守卫的参数: router.beforeEach((to, from, next) => { // `to` 和 `from` 都是路由对象 })
$route.path 类型: string 字符串,对应当前路由的路径,老是解析为绝对路径,如 "/foo/bar"。
$route.params 类型: Object 一个 key/value 对象,包含了动态片断和全匹配片断,若是没有路由参数,就是一个空对象。
$route.query 类型: Object 一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有 $route.query.user == 1,若是没有查询参数,则是个空对象。
$route.hash 类型: string 当前路由的 hash 值 (带 #) ,若是没有 hash 值,则为空字符串。
$route.fullPath 类型: string 完成解析后的 URL,包含查询参数和 hash 的完整路径。
$route.matched 类型: Array<RouteRecord>
一个数组,包含当前路由的全部嵌套路径片断的路由记录 。路由记录就是 routes 配置数组中的对象副本 (还有在 children 数组)。 const router = new VueRouter({ routes: [ // 下面的对象就是路由记录 { path: '/foo', component: Foo, children: [ // 这也是个路由记录 { path: 'bar', component: Bar } ] } ] }) 当 URL 为 /foo/bar,$route.matched 将会是一个包含从上到下的全部对象 (副本)。
$route.name 当前路由的名称,若是有的话。(查看命名路由)
$route.redirectedFrom 若是存在重定向,即为重定向来源的路由的名字。(参阅重定向和别名)
经过在 Vue 根实例的 router 配置传入 router 实例, 经过这些属性成员会被注入到每一个子组件。
beforeRouteEnter beforeRouteUpdate beforeRouteLeave
const Foo = { template: `...`, beforeRouteEnter (to, from, next) { // 在渲染该组件的对应路由被 confirm 前调用 // 不!能!获取组件实例 `this` // 由于当守卫执行前,组件实例还没被建立 }, beforeRouteUpdate (to, from, next) { // 在当前路由改变,可是该组件被复用时调用 // 举例来讲,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候, // 因为会渲染一样的 Foo 组件,所以组件实例会被复用。而这个钩子就会在这个状况下被调用。 // 能够访问组件实例 `this` }, beforeRouteLeave (to, from, next) { // 导航离开该组件的对应路由时调用 // 能够访问组件实例 `this` } }
1. 导航被触发。 2. 在失活的组件里调用离开守卫。 3. 调用全局的 beforeEach 守卫。 4. 在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)。 5. 在路由配置里调用 beforeEnter。 6. 解析异步路由组件。 7. 在被激活的组件里调用 beforeRouteEnter。 8. 调用全局的 beforeResolve 守卫 (2.5+)。 9. 导航被确认。 10. 调用全局的 afterEach 钩子。 11. 触发 DOM 更新。 12. 用建立好的实例调用 beforeRouteEnter 守卫中传给 next 的回调函数。