今天花一天时间阅读完Vue Router的官方文档的基础部分,简单的作一下总结和记录
## Vue Router是什么
Vue Router 是 Vue.js
官方的路由管理器,用于构建单页应用(SPA)。地址栏url的变化并不会去发请求去服务器取新的页面,而是按需加载局部组件,看起来就像无刷新同样。包括的功能包括:javascript
实际上路由的用途是用路由配置表来控制 url
对应的跳转地址
,地址对应的能够是基础视图组件
或者布局组件
,能够用于灵活的视图导航。html
直接下载 / CDN
下载地址:https://unpkg.com/vue-router/dist/vue-router.js
而后经过js引入进来:vue
<script src="/path/to/vue.js"></script> <script src="/path/to/vue-router.js"></script>
NPMjava
安装npm包:webpack
npm install vue-router
而后经过Vue.use()引入:web
import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter)
Vue Router的API和Vuex相似,new VueRouter
构建出一个路由实例,而后提供了<router-link>
组件用于写连接,<router-view>
组件用于展现,Router的构建选项中最重要的就是 routes
,它用来定义路由的规则。vue-router
一个简单的路由例子:npm
<script src="https://unpkg.com/vue/dist/vue.js"></script> <script src="https://unpkg.com/vue-router/dist/vue-router.js"></script> <div id="app"> <h1>Hello App!</h1> <p> <!-- 使用 router-link 组件来导航. --> <!-- 经过传入 `to` 属性指定连接. --> <!-- <router-link> 默认会被渲染成一个 `<a>` 标签 --> <router-link to="/foo">Go to Foo</router-link> <router-link to="/bar">Go to Bar</router-link> </p> <!-- 路由出口 --> <!-- 路由匹配到的组件将渲染在这里 --> <router-view></router-view> </div>
// 0. 若是使用模块化机制编程,导入Vue和VueRouter,要调用 Vue.use(VueRouter) // 1. 定义 (路由) 组件。 // 能够从其余文件 import 进来 const Foo = { template: '<div>foo</div>' } const Bar = { template: '<div>bar</div>' } // 2. 定义路由 // 每一个路由应该映射一个组件。 其中"component" 能够是 // 经过 Vue.extend() 建立的组件构造器, // 或者,只是一个组件配置对象。 // 咱们晚点再讨论嵌套路由。 const routes = [ { path: '/foo', component: Foo }, { path: '/bar', component: Bar } ] // 3. 建立 router 实例,而后传 `routes` 配置 // 你还能够传别的配置参数, 不过先这么简单着吧。 const router = new VueRouter({ routes // (缩写) 至关于 routes: routes }) // 4. 建立和挂载根实例。 // 记得要经过 router 配置参数注入路由, // 从而让整个应用都有路由功能 const app = new Vue({ router }).$mount('#app') // 如今,应用已经启动了!
经过使用:
动态路径参数来作动态路由,使用通配符 (*
)来匹配任意路径,做为捕获任意路径和404路径。详细请参考:连接地址编程
路由是支持嵌套的,routes中的 children
配置用来写嵌套路由配置,而后嵌套的路由能够在组件的 <router-view>
作嵌套展现。api
除了使用 <router-link>
建立 a 标签来定义导航连接,咱们还能够借助 router 的实例方法,经过编写代码来实现。主要采用router.push(location, onComplete?, onAbort?)
这个方法,另外还提供了router.replace(location, onComplete?, onAbort?)
,router.go(n)
这两个不经常使用的方法,具体用法参考:连接地址
除了直接用 path
指定路由的路径外,能够用 name
给路由取一个别名方便使用,具体参考:连接
能够给视图也取名字方便使用, router-view
组件的 name
属性指定,不给的话默认为 default
名字的。
重定向也是经过 routes 配置来完成,配置采用 redirect
。例子:
const router = new VueRouter({ routes: [ { path: '/a', redirect: '/b' } ] })
别名采用 alias
来命名。
使用 props
将组件和路由解耦,让路由能够传参数给组件,达到动态配置目的。例子:
const User = { props: ['id'], template: '<div>User {{ id }}</div>' } const router = new VueRouter({ routes: [ { path: '/user/:id', component: User, props: true }, // 对于包含命名视图的路由,你必须分别为每一个命名视图添加 `props` 选项: { path: '/user/:id', components: { default: User, sidebar: Sidebar }, props: { default: true, sidebar: false } } ] })
props
能够是布尔、对象和函数,具体用法参考:连接地址
vue-router
默认 hash
模式 ,会让url地址里面带有#
符号,很是丑陋并且让锚点
语法没法使用,因此须要 history
模式,例子:
const router = new VueRouter({ mode: 'history', routes: [...] })
结合 Vue
的异步组件
和 Webpack
的代码分割功能,轻松实现路由组件的懒加载(路由被访问的时候才加载对应组件)。例子:
routes: [ { path: "/user", component: () => import(/* webpackChunkName: "layout" */ "./layouts/UserLayout") } ]
其余主题包括:
对于这些主题,感兴趣的能够再点击连接学习,根据2/8定律,不做为学习的重点,用到再看。
原文出处:https://www.cnblogs.com/huangmengke/p/11697295.html