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 相关文章推荐
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
Nov 30 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
Mar 27 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
May 08 Javascript
jQuery中click事件用法实例
Dec 26 Javascript
js实现简单的左右两边固定广告效果实例
Apr 10 Javascript
JS图片等比例缩放方法完整示例
Aug 03 Javascript
js手动播放图片实现图片轮播效果
Sep 17 Javascript
JavaScript实现通过select标签跳转网页的方法
Sep 29 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
Apr 24 Javascript
深入理解 ES6中的 Reflect用法
Jul 18 Javascript
一篇超完整的Vue新手入门指导教程
Nov 18 Vue.js
基于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扩展图文教程
2008/12/12 PHP
PHP防止注入攻击实例分析
2014/11/03 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
jQuery向父辈遍历的简单方法
2016/09/18 Javascript
基于canvas的二维码邀请函生成插件
2017/02/14 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
使用vue-aplayer插件时出现的问题的解决
2018/03/02 Javascript
nodejs实现用户登录路由功能
2019/05/22 NodeJs
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
vue动态加载SVG文件并修改节点数据的操作代码
2020/08/17 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
python访问系统环境变量的方法
2015/04/29 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python标准库之collections包的使用教程
2017/04/27 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
python3写爬取B站视频弹幕功能
2017/12/22 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
Python 运行.py文件和交互式运行代码的区别详解
2019/07/02 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
Python 创建守护进程的示例
2020/09/29 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
数控技术专科生自我评价
2014/01/08 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
电台实习生求职信
2014/02/25 职场文书
2014年母亲节寄语
2014/05/07 职场文书
森林防火标语
2014/06/23 职场文书
离婚纠纷代理词
2015/05/23 职场文书
各种货币符号快捷输入
2022/02/17 杂记
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js