前言
Vue.js的一大特色就是构建单页面应用十分方便,vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。既然要方便构建单页面应用那么自然少不了路由,vue-router就是vue官方提供的一个路由框架。
路由的安装
npm安装
可以使用npm直接安装插件
1 | npm install vue-router --save |
执行命令完成vue-router的安装,并在package.json中添加了vue-router的依赖。
1 | "dependencies": { |
如果是要安装在开发环境下,则使用以下命令行:
1 | npm install vue-router --save-dev |
1 | "devDependencies": { |
直接下载/CDN
https://unpkg.com/vue-router/dist/vue-router.js
1 | <script src="/path/to/vue.js"></script> |
路由实现
一个最简单的单页面应用
app.js
1 | import Vue from 'vue' |
App.vue
1 | <template> |
page01.vue
1 | <template> |
page02.vue
1 | <template> |
- npm安装vue-router
- Vue.use(VueRouter)全局安装路由功能
- 定义路径数组routes并创建路由对象router
- 将路由注入到Vue对象中
- 在根组件中使用
定义跳转路径 - 在根组件中使用
来渲染组件 - 创建子组件
路由的跳转
router-link
router-link标签用于页面的跳转
1 | <router-link to="/page01">page01</router-link> |
点击router-link标签router-view就会渲染路径为/page01的页面。
router.push
通过JS代码控制路由的界面渲染
1 | // 字符串 |
实例中的语法:
1 | // 字符串 |
router.replace
push方法会向 history 栈添加一个新的记录,而replace方法是替换当前的页面,不会向 history 栈添加一个新的记录。
1 | <router-link to="/05" replace>05</router-link> |
1 | this.$router.replace({ path: '/05' }) |
router.go
控制history记录的前进和后退
1 | // 在浏览器记录中前进一步,等同于 history.forward() |
传参方式
由跳转的过程中会传递一个object,我们可以通过watch方法查看路由信息对象。
1 | watch: { |
控制台看到的路由信息对象
1 | { |
params
路由配置文件中定义参数
1 | { |
路径后面的/:orderId就是我们要传递的参数
1 | this.$router.push({ path: '/order/detail/441'}); |
此时路由跳转的地址
1 | http://localhost:3000/#/order/detail/441 |
组件中获取数据
1 | <h2>{{ $route.params.orderId }}</h2> |
1 | console.log(this.$route.params.orderId) |
query
query传递数据的方式就是URL常见的查询参数
1 | <router-link :to="{ path: '/order/detail', query: { id: item.id, stateId: item.stateId }}"> |
1 | this.$router.push({path: '/order/detail', query: {id: orderIdCache}}); |
获取数据和params是一样
1 | <h2>{{ $route.query.orderId }}</h2> |
1 | console.log(this.$route.query.orderId) |