【vue的路由模式】+路由实现原理+route和router

本文介绍了Vue路由的两种模式——hash模式和history模式,重点讲解了它们的工作原理、优缺点,并比较了前后端分离与路由在单页应用中的作用。同时,讨论了两种模式下如何处理URL变化,以及router与route的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

路由、路由模式

vue路由的两种模式:

1、hash模式,其原理是onhashchange事件,可以在window对象上监听这个事件;

2、history模式,可利用“history.pushState”的API来完成URL跳转。

前后端分离 ===> 利用Ajax,可以在不刷新浏览器的情况下异步数据请求交互。

单页应用(只有一个html文件,整个网站的所有内容都在这一个html里,通过js来处理)不仅仅是在页面交互是无刷新的,连页面跳转都是无刷新的。为了实现单页应用 ==> 前后端分离 + 前端路由。(更新视图但不重新请求页面)

前端路由实现起来其实也很简单,就是匹配不同的 url 路径,进行解析,加载不同的组件,然后动态的渲染出区域 html 内容。

hash模式

1、vue-router默认是hash模式
2、url中有“#”号
3、hash值(“#”后的值)不会被包含在http请求中,改变hash值不会引起页面的重新加载。
4、hash改变会触发hashChange事件,会被浏览器记录下来,可以使用浏览器的前进和后退。
5、hash兼容到IE8以上
6、 会创建hashHistory对象,在访问不同的路由的时候,会发⽣两件事:

  • HashHistory.push()将新的路由添加到浏览器访问的历史的栈顶
  • HasHistory.replace()替换到当前栈

history模式

1、url不带参数
2、history 兼容 IE10 以上
3、history 模式需要后端配合将所有访问都指向 index.html,否则用户刷新页面,会导致 404 错误
4、在HTML4中常用的方法:

history.forward():在历史记录中前进一步
history.back():在历史记录中后退一步
history.go(n):在历史记录中跳转n步骤,n=1为前进一页,n=0为刷新本页,n=-1为后退一页。
5、HTML5中新增了

history.pushState(data[,title][,url]):向历史记录中追加一条记录
history.replaceState(data[,title][,url]):替换当前页在历史记录中的信息
history.state:是一个属性,可以得到当前页的state信息。
window.onpopstate:是一个事件,在点击浏览器后退按钮或js调用forward()、back()、go()时触发。监听函数中可传入一个event对象,event.state即为通过pushState()或replaceState()方法传入的data参数

区别:

前面的hashchange,你只能改变#后面的url片段。而pushState设置的新URL可以是与当前URL同源的任意URL。

  • history模式则会将URL修改得就和正常请求后端的URL一样,如后端没有配置对应/user/id的路由处理,则会返回404错误
  • history模式怕刷新,因为刷新是实实在在地去请求服务器的。因此需要服务端对每一个可能的path值都作相应的映射。当刷新时,如果服务器中没有相应的响应或者资源,会分分钟刷出一个404来。

router与route的区别

  1. route从当前router跳转对象里面可以获取name、path、query、params等(传的参数由 this. r o u t e . q u e r y 或者 t h i s . route.query或者 this. route.query或者this.route.params 接收)

  2. router为VueRouter实例。想要导航到不同URL,则使用 r o u t e r . p u s h 方法;返回上一个 h i s t o r y 也是使用 router.push方法;返回上一个history也是使用 router.push方法;返回上一个history也是使用router.go方法
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值