Vue router安装及使用方法解析


Posted in Vue.js onDecember 02, 2020

对于单页应用,官方提供了vue-router进行路由跳转的处理,本篇主要也是基于其官方文档写作而成。

安装

基于传统,我更喜欢采用npm包的形式进行安装。

npm install vue-router --save

当然,官方采用了多种方式进行安装,包括bower,cdn等。

基本用法

在HTML文档中使用,只需要利用v-link这个directive就行了,如:

<a v-link="{path: '/view-a'}">Go to view-a</a>

ps: v-link还支持activeClass用于指定链接活跃时的css样式。replace属性为true的时候可以让链接在跳转的时候不会留下历史记录。

而在ES5中使用,需要先创建路由器实例,随后传入配置参数即可,如:

var router = new VueRouter();

router.map({
'/view-a': {
component: ViewA
},
'/view-b': {
component: ViewB
}
});

router.start(App, '#app');

以上定义的路由器规则,采用映射到一个组件的方式,最后启动应用的时候,挂载到#app的元素上。

当然,如果你想采用ES6的语法进行配置,也是很容易做到的:

先建立一个路由器模块,主要进行配置和绑定相关信息

import Vue from 'vue';
import VueRouter from 'vue-router';

Vue.use(VueRouter);

const router = new VueRouter(); //这里可以带有路由器的配置参数

router.map({
'/view-a': {
component: ViewA
},
'/view-b': {
component: ViewB
}
});

export default router; //将路由器导出

在app.js入口启动文件中启用该路由器

import Vue from 'vue';
import router from './routers';

router.start(App, '#app');

嵌套路由

如果想要使用嵌套路由,如/a/b则可以更新路由配置

router.map({
'/a': {
component: A,
subRoutes: {
'/b': {
component: B
}
}
}
});

同时,你需要在组件A和组件B中使用<router-view>,如:

<div id="app">
<router-view></router-view>
</div>

组件A中,使用嵌套的外链

<div id="A">
<h1>
This is component A
</h1>
<router-view></router-view>
</div>

路由器将自动渲染对应的组件以及更新路由信息。

其中<router-view>可以传递props,支持v-ref,同时也可以使用v-transition和transition-mode来获得场景切换效果,被渲染的组件将注册到父级组件的this.$对象上。

路由对象和路由匹配

路由对象,即$router会被注入每个组件中,可以利用它进行一些信息的获取。如

属性 说明
$route.path 当前路由对象的路径,如'/view/a'
$rotue.params 关于动态片段(如/user/:username)的键值对信息,如{username: 'paolino'}
$route.query 请求参数,如/foo?user=1获取到query.user = 1
$route.router 所属路由器以及所属组件信息
$route.matched 数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。
$route.name 当前路径名字

当然,你也可以在自己定义路由规则(map)的时候自定义字段,用以特殊目的。

全匹配片段的语法是使用通配符* 如,/user/*any就会匹配到任何以/user为开头的路径,并给params对象中赋值一个属性any

动态片段的语法就是使用:作为标志。

使用路径名称

在定义路径规则的时候,如果你给它提供了一个name属性,则可以在后续使用这条路径规则的时候,直接引用。

router.map({
'/user/:userId': {
name: 'user',
component: {...}
}
});

在v-link中使用

<a v-link="{name: 'user', params: {userId: 1}">This is a user whose id is 1</a>

还可以使用router.go()

router.go({name: 'user', params: {userId: 1}});

最终都会匹配到/user/1这条路径上

路由选项

路由选项名 默认值 作用
hashbang true 将路径格式化为#!开头
history false 启用HTML5 history模式,可以使用pushState和replaceState来管理记录
abstract false 使用一个不依赖于浏览器的浏览历史虚拟管理后端。
transitionOnLoad false 初次加载是否启用场景切换
saveScrollPosition false 在启用html5 history模式的时候生效,用于后退操作的时候记住之前的滚动条位置
linkActiveClass "v-link-active" 链接被点击时候需要添加到v-link元素上的class类,默认为active

如,我想采用一个有路径格式化并启用Html5 history功能的路由器,则可以在路由器初始化的时候,指定这些参数:

var router = new VueRouter({
hashbang: true,
history: true
});

这里只是做了一些简单的介绍,更多选项其参考官方文档http://router.vuejs.org/zh-cn/。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Vue.js 相关文章推荐
vue-drawer-layout实现手势滑出菜单栏
Nov 19 Vue.js
Vue使用Element实现增删改查+打包的步骤
Nov 25 Vue.js
使用vue编写h5公众号跳转小程序的实现代码
Nov 27 Vue.js
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
Vue中引入svg图标的两种方式
Jan 14 Vue.js
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
vue 数据双向绑定的实现方法
Mar 04 Vue.js
vue点击弹窗自动触发点击事件的解决办法(模拟场景)
May 25 Vue.js
vue+elementui 实现新增和修改共用一个弹框的完整代码
Jun 08 Vue.js
vue里使用create, mounted调用方法
Apr 26 Vue.js
vue3.0中setup使用(两种用法)
Dec 02 #Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 #Vue.js
Vue router传递参数并解决刷新页面参数丢失问题
Dec 02 #Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 #Vue.js
vue $router和$route的区别详解
Dec 02 #Vue.js
基于vue项目设置resolves.alias: '@'路径并适配webstorm
Dec 02 #Vue.js
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
Dec 02 #Vue.js
You might like
咖啡的种类和口感
2021/03/03 新手入门
社区(php&amp;&amp;mysql)六
2006/10/09 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
js option删除代码集合
2008/11/12 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
js获取视频时长代码
2014/04/10 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
2016/01/18 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
最原始的jQuery注册验证方式
2016/10/11 Javascript
js中通过getElementsByName访问name集合对象的方法
2016/10/31 Javascript
详解基于Vue的支持数据双向绑定的select组件
2019/09/02 Javascript
JavaScript对象原型链原理解析
2020/01/22 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
跟老齐学Python之永远强大的函数
2014/09/14 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
基于多进程中APScheduler重复运行的解决方法
2019/07/22 Python
python @propert装饰器使用方法原理解析
2019/12/25 Python
Python编写memcached启动脚本代码实例
2020/08/14 Python
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
中专生毕业自我鉴定
2013/11/01 职场文书
英文请假条
2014/04/11 职场文书
关于读书的演讲稿
2014/05/07 职场文书
经验交流材料格式
2014/12/30 职场文书
留学推荐信中文范文
2015/03/26 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
婚前协议书怎么写,才具有法律效力呢 ?
2019/06/28 职场文书
Android实现图片九宫格
2022/06/28 Java/Android
Windows Server 2012 R2服务器安装与配置的完整步骤
2022/07/15 Servers
Go结合Gin导出Mysql数据到Excel表格
2022/08/05 Golang