vue router总结 $router和$route及router与 router与route区别


Posted in Javascript onJuly 05, 2019

vue router总结 $router和$route及router与 router与route区别

1 this.$router和this.$route的区别

vue router

this.$router是VueRouter的实例方法,当导航到不同url,可以使用this.$router.push方法,这个方法则会向history里面添加一条记录,当点击浏览器回退按钮或者this.$router.back()就会回退之前的url。
this.$route相当于当前激活的路由对象,包含当前url解析得到的数据,可以从对象里获取一些数据,如name,path等。

2 路由跳转分为编程式和声明式

声明式

//路由入口
<router-link :to="...">
//视图出口
<router-view></router-view>
//路由入口
<router-link :to="...">
//视图出口
<router-view></router-view>

当你想在一个页面嵌套子路由,并且不跳转页面的时候,我觉得这个超好用啊,子页面就会渲染在router-view的地方

编程式

// 字符串
router.push('home')
// 对象
router.push({ path: 'home' })
// 命名的路由
router.push({ name: 'user', params: { userId: '123' }})
// 带查询参数,变成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})

// 字符串
router.push('home')
// 对象
router.push({ path: 'home' })
// 命名的路由
router.push({ name: 'user', params: { userId: '123' }})
// 带查询参数,变成 /register?plan=private
router.push({ path: 'register', query: { plan: 'private' }})

但是一定要注意啊,如果你提供了path,那么params和query的配置就会被忽略的

3 path:'name'和path:'/name'的区别

如果加/则会被当作跟目录,否则当前的路径会嵌套在之前的路径中

//比如当前路径是home
this.$router.push({path:'name'})//==>path为/home/name
this.$router.push({path:'/name'})//==>path为/name
//比如当前路径是home
this.$router.push({path:'name'})//==>path为/home/name
this.$router.push({path:'/name'})//==>path为/name

ps:下面看下vue中router与 router与route区别

vue-router中经常会操作的两个对象route和 route和router两个。

1、$route对象

vue router总结 $router和$route及router与 router与route区别

$route对象表示当前的路由信息,包含了当前 URL 解析得到的信息。包含当前的路径,参数,query对象等。
**1.$route.path**
      字符串,对应当前路由的路径,总是解析为绝对路径,如 "/foo/bar"。
**2.$route.params**
      一个 key/value 对象,包含了 动态片段 和 全匹配片段,
      如果没有路由参数,就是一个空对象。
**3.$route.query**
      一个 key/value 对象,表示 URL 查询参数。
      例如,对于路径 /foo?user=1,则有 $route.query.user == 1,
      如果没有查询参数,则是个空对象。
**4.$route.hash**
      当前路由的 hash 值 (不带 #) ,如果没有 hash 值,则为空字符串。锚点
**5.$route.fullPath**
      完成解析后的 URL,包含查询参数和 hash 的完整路径。
**6.$route.matched**
      数组,包含当前匹配的路径中所包含的所有片段所对应的配置参数对象。
**7.$route.name    当前路径名字**
**8.$route.meta  路由元信息

route object 出现在多个地方:

•组件内的 this.route和 route和route watcher 回调(监测变化处理);
•router.match(location) 的返回值
•scrollBehavior 方法的参数
•导航钩子的参数:

router.beforeEach((to, from, next) => {
 // to 和 from 都是 路由信息对象,后面使用路由的钩子函数就容易理解了
})

2、$router对象

vue router总结 $router和$route及router与 router与route区别

$router对象是全局路由的实例,是router构造方法的实例。

路由实例方法:

1、push

// 字符串
   this.$router.push('home')
// 对象
   this.$router.push({ path: 'home' })
// 命名的路由
   this.$router.push({ name: 'user', params: { userId: 123 }})
// 带查询参数,变成 /register?plan=123
   this.$router.push({ path: 'register', query: { plan: '123' }})

push方法其实和<router-link :to="...">是等同的。

 注意:push方法的跳转会向 history 栈添加一个新的记录,当我们点击浏览器的返回按钮时可以看到之前的页面。

2、go

// 页面路由跳转 前进或者后退
this.$router.go(-1) // 后退

3、replace

//push方法会向 history 栈添加一个新的记录,而replace方法是替换当前的页面,
 不会向 history 栈添加一个新的记录

05

// 一般使用replace来做404页面
this.$router.replace('/')

配置路由时path有时候会加 '/' 有时候不加,以'/'开头的会被当作根路径,就不会一直嵌套之前的路径。

总结

以上所述是小编给大家介绍的vue router总结 $router和$route及router与 router与route区别 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Mootools 1.2教程 事件处理
Sep 15 Javascript
JQuery的AJAX实现文件下载的小例子
May 15 Javascript
JS 去除Array中的null值示例代码
Nov 20 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
JS基于面向对象实现的拖拽库实例
Sep 24 Javascript
很酷的星级评分系统原生JS实现
Aug 25 Javascript
javascript 解决浏览器不支持的问题
Sep 24 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
Mar 11 Javascript
vue.js实现价格格式化的方法
May 23 Javascript
jQuery实现的简单前端搜索功能示例
Oct 28 jQuery
详解在create-react-app使用less与antd按需加载
Dec 06 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
Jul 04 Javascript
基于vue实现圆形菜单栏组件
Jul 05 #Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
Jul 05 #Javascript
vue中实现Monaco Editor自定义提示功能
Jul 05 #Javascript
VueCli3.0中集成MockApi的方法示例
Jul 05 #Javascript
Electron vue的使用教程图文详解
Jul 05 #Javascript
监控微信小程序中的慢HTTP请求过程详解
Jul 05 #Javascript
JS实现求字符串中出现最多次数的字符和次数示例
Jul 05 #Javascript
You might like
php与paypal整合方法
2010/11/28 PHP
php实现URL加密解密的方法
2016/11/17 PHP
PHP simplexml_load_file()函数讲解
2019/02/03 PHP
Exjs 入门篇
2010/04/07 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
jquery插件NProgress.js制作网页加载进度条
2015/06/05 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
简单的jQuery拖拽排序效果的实现(增强动态)
2017/02/09 Javascript
微信小程序实现图片上传功能实例(前端+PHP后端)
2018/01/10 Javascript
vue组件编写之todolist组件实例详解
2018/01/22 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
Vue + Elementui实现多标签页共存的方法
2019/06/12 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
javascript实现移动端红包雨页面
2020/06/23 Javascript
[04:09]2014DOTA2国际邀请赛Ti西雅图 历届冠军相继出局 BBC综述今日比赛
2014/07/20 DOTA
python各种语言间时间的转化实现代码
2016/03/23 Python
Python之列表实现栈的工作功能
2019/01/28 Python
对Django中内置的User模型实例详解
2019/08/16 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
Python要求O(n)复杂度求无序列表中第K的大元素实例
2020/04/02 Python
keras处理欠拟合和过拟合的实例讲解
2020/05/25 Python
Python pysnmp使用方法及代码实例
2020/08/24 Python
python破解同事的压缩包密码
2020/10/14 Python
HTML5之SVG 2D入门10—滤镜的定义及使用
2013/01/30 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
比利时家具购买网站:Home24
2019/01/03 全球购物
俄罗斯奢侈品牌衣服、鞋子和配饰的在线商店:INTERMODA
2020/07/17 全球购物
关于运动会广播稿300字
2014/10/05 职场文书
高中生综合素质评价范文
2015/08/18 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
只需要这一行代码就能让python计算速度提高十倍
2021/05/24 Python
一文搞懂MySQL索引页结构
2022/02/28 MySQL
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers
Python使用pandas导入csv文件内容的示例代码
2022/12/24 Python