Vue-VueRouter 使用
前言
router 翻译过来就是路由的意思,什么是路由?路由就是通过互联网的网络把信息从源地址传输到目的地址的活动,那什么是 vue-router?
官方说法是:Vue Router 是前端路由,也是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举,功能包括:嵌套路由映射,动态路由选择,路由参数、查询、通配符等等,在 vue-router 的单页面应用中,页面的路径的改变就是组件的切换
安装路由
我们要使用路由就要先安装路由,在脚手架创建项目的时候可以为我们自动创建,也可以手动通过 npm 下载
配置
脚手架创建路由时已经为我们自动配好了,手动下载的需要自己配置。创建 router 文件夹->创建 index.js
main.js 引入
vue-router 的基本使用
创建路由组件
创建两个 vue 文件,分别写入一些东西
配置路由映射
在路由对象里配置路由映射关系
使用路由<router-link>
和<router-view>
<router-link>
本质上是一个 a 标签,用于跳转,在<router-link>
有个 to 属性,用于跳转的路径,将页面路径设置为刚刚配好的映射关系里的 path
<router-view>
是一个容器,它渲染的组件是你使用 vue-router 指定的。会根据当前的路径,动态渲染出不同的组件
可以看见点击标签展示出来的组件发生了变化,右上角的路径就是路由对象里映射关系的 path
配置路由默认路径
一般情况下都会有一个默认页面的,但是上面需要点击才会显示出来内容,所以要在 router 里新增一个映射,path 配置的是根路径/,redirect 是重定向的意思,我们将根路径重定向到/home 的路径下,这样页面就默认展示/home 组件里的内容出来
重新进入页面默认展示/home 组件内容
<router-link>
的其他属性
<router-link>
除了 to 属性还有其他的属性:
tag
:<router-link>
默认是一个 a 标签,可以指定<router-link>
渲染成其他元素,例如设置 tag 属性为 button
2.replace
:replace 不会留下 history 记录,指定 replace 情况下,后退键不能返回到上一页页面中
3.active-class
当<router-link>
对应的路由匹配成功时,会自动给当前元素设置一个 router-link-active 的 class,设置 active-class 可以修改默认的名称(不常用)
通过代码跳转路由
除了标签跳转还有其他方法跳转路由嘛?vur-router 为我们提供了一个方法this.$router.push(路由路径)
,这样就可以通过代码的方式来跳转路由
动态路由的使用
当我们有一个商品的组件,我们需要让不同的商品 id 都映射到这个组件中,该怎么办呢?难道创建多个不同 id 的映射吗,此时就需要用到动态路由了,动态路由就是把匹配某种模式下的路由映射到同个组件中,本质就是通过 url 进行传参
在配置映射的时候 path 使用:动态绑定参数
跳转时拼接上参数
但是在开发中这个参数一般是动态的,在 data 里定义一个 goodId,在动态拼接上参数,就可以实现上图效果
如果想获取这个 id 展示出来,可以使用$route
对象,这个$route
对象和$router
是不同的,一个用来获取路径上的参数的,一个实现页面之间的跳转
传递参数的方式
传递参数的方式除了 params 还有 query
params 的类型:配置路由格式/router/:id,传递的方式就是在 path 后面跟上对应的值,获取参数方式为 $route.params
query 的类型:配置路由格式/router,传递的方式是在对象中使用 query 的 key 作为传递方式,传递后形成的路径/router?id=123,获取参数方式为 $route.query
嵌套路由
在开发中会经常遇到路由嵌套路由,嵌套路由的关键属性是 children,children 也是一组路由,children 可以像 routes 一样的去配置路由数组:
版权声明: 本文为 InfoQ 作者【格斗家不爱在外太空沉思】的原创文章。
原文链接:【http://xie.infoq.cn/article/79af3740e055d1d05d2daf1e5】。文章转载请联系作者。
评论