位置: IT常识 - 正文

VueRouter的两种模式(vuerouter模块化)

编辑:rootadmin
VueRouter的两种模式

推荐整理分享VueRouter的两种模式(vuerouter模块化),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue router mode区别,vuerouter原理,vuerouter原理,vuerouter用法,vuerouter的原理,vuerouter模块化,vuerouter模块化,简述vuerouter,内容如对您有帮助,希望把文章链接给更多的朋友!

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

前端路由:匹配不同的url路径,进行解析,加载不同组件,动态渲染内容,不会向后端发出请求。(VueRouter)

单页应用SPA(只有一个html文件),页面交互和页面刷新都是无刷新的。前后端分离+前端路由来实现。

VueRouter有两种模式:Hash模式、History模式,默认是Hash模式,可以通过mode属性进行设置。

modehistory对象创建依据的类hashnew HashHistory(this, options.base, this.fallback)history​​​​​​​new HTML5History(this, options.base)abstractnew AbstractHistory(this, options.base)一、Hash模式

Hash模式是VueRouter的默认模式,工作原理是利用hashchange事件监听hash的变化,即#xxx,然后通过。可以在window对象上监听这个事件。

window.onhashchange = function(event){ // event.oldURL 表示原来的URL,有#则含#及其后字符串 // event.newURL 表示现在的URL,有#则含#及其后字符串}

HashHistory构造函数:

HashHistory.push() // 将新路由添加到浏览器历史访问栈

HashHistory.replace() // 将浏览器历史访问栈栈顶路由替换成新路由

由于hash变化的URL都被记录在浏览器历史访问栈,尽管浏览器没有访问服务器,但页面内容和URL一一对应,可以使用浏览器的前进和后退功能。

触发hashchange事件的几种情况如下:

1. 浏览器的前进、后退操作会触发window.location.hash的变化,从而触发hashchange事件。

2. 当只改变浏览器地址栏URL的哈希值,此时回车,浏览器不会发送任何请求给服务器,只会触发hashchange事件。

3. 当在浏览器地址栏URL中输入一个包含hash的url,此时回车,浏览器会发送除hash外的地址请求给服务器,请求完成,设置hash值,触发hashchange事件。

4. 标签<a>的href属性可以设置为页面某元素的ID(如#top),点击跳转到该ID元素所在区域,同时浏览器自动设置window.location.hash属性,地址中的hash也会变化成其ID(如#top),触发hashchange事件。

二、History模式

Hash模式的缺点:

1. hash本来用于做页面定位,若用来做路由,原锚点公共失效。

2. Hash模式的传参基于url,若有复杂的数据会有体积的限制。History模式除了可以利用url传参,还可以将数据存放一个特定的对象中。

3. 路径书写不简约。

History模式的书写更加简洁,去掉#。充分利用HTML5 History Interface中新增的pushState()和replaceState()方法,这俩个方法应用于浏览器的历史记录栈(window.history指向History对象,表示当前窗口的浏览历史),使得不刷新页面改变url地址。在已有的back()、forward()、go()(接受一个整数作为参数,若参数超过实际存在的网址范围,该范围无效果;若不指定参数,默认参数为0,相当于刷新页面)的基础上,提供了对历史记录修改的功能。

前进和后退操作时都不会请求服务器,而是通过popstate事件监听,刷新页面才会向服务器发起请求。

2.1 History.pushSate()

用于在浏览器历史访问栈中添加一条记录,该方法不会刷新页面,只是导致History对象发生变化,地址栏会发生变化。使用该方法后,可以用History.state读出状态对象。

History.pushSate(object, title, url)

VueRouter的两种模式(vuerouter模块化)

object:一个对象,通过pushState方法可以将该对象内容传递到新页面中,若不需要,填null。

title:标题,几乎没有浏览器支持该参数,传一个空字符串。

url:新的网站,需与当前页面处于同一个域。不指定默认为当前地址。若设置跨域地址,会报错。

若在url中设置#xxx,不会触发hashchange事件。

2.2 History.replaceSate()

用于修改History对象的当前记录,用法同History.pushSate(object, title, url)。

2.3 popstate事件

仅仅调用pushSate()或replaceState()方法,不会触发该事件。

只有用户点击浏览器前进和后退,或使用脚本调用history.back()、history.forward()、history.go()方法才会触发popstate事件。

该事件仅针对同一个文档,若浏览历史的切换,导致加载不同的文档,该事件也不会触发。

第一次加载不会触发popstate事件。

其回调函数的参数为event对象,state属性指向pushSate()和replaceState()方法提供的History的当前对象,也可以通过history.state获得该对象。

当页面刷新时,需要向服务器发起请求。History模式的url会全部传给服务器,即服务器需要匹配完成的URL,否则报404错误,需要后端配置路由。Hash模式的url的哈希值不会携带在请求中。

三、使用路由模块实现页面跳转的方式

1. 修改地址栏

2. this.$router.push('路由地址')

3. <router-link  to="路由地址"></router-link>

四、Hash模式和History模式的相同点和不同点

相同点:

1. 都是VueRouter的模式配置选项。

2. 都可以用作SPA(单页面应用)的实现,实现前端路由,不向服务器发起请求,动态渲染页面。

不同点:

1. Hash模式需要#xxx(哈希值),History模式书写更简约。

2. Hash模式是通过window对象监听hashchange事件,根据hash值的变化来动态渲染页面的;History模式是通过window对象监听popstate事件,当浏览器前进和后退时,获取当前history对象状态即history.state来动态渲染组件。

3. Hash模式创建history对象是依赖HashHistory构造函数;History模式创建history对象是依赖HTML5History构造函数。

Hash模式利用HashHistory.push()和HashHistory.replace()可以将hash变化的URL都被记录在浏览器历史访问栈,实现页面内容和URL一一对应,从而可以使用浏览器的前进和后退功能。

History模式利用HTML5History.pushState()和HTML5History.replaceState()修改页面的url地址,修改history对象的状态,而不刷新页面。

4. Hash模式通过携带在url中传递参数;History模式既可以通过携带在url中传递参数,也可以将数据存放在一个特定的对象中。

5. Hash模式只有hash值设置为不同于上次时,才会被添加进历史记录栈;History模式可以记录相同的url。

6. Hash模式只能修改#之后的部分;History模式的pushState设置的新的url可以是于当前url同源的任意url。

本文链接地址:https://www.jiuchutong.com/zhishi/299878.html 转载请保留说明!

上一篇:Boundary Loss 原理与代码解析(bounded linear functional)

下一篇:python机器人编程——差速机器人小车的控制,控制模型、轨迹跟踪,轨迹规划、自动泊车(上)(python机器人编程控制)

  • 微信不是群主怎么拉人进群(微信不是群主怎么艾特所有人)

    微信不是群主怎么拉人进群(微信不是群主怎么艾特所有人)

  • vivos1怎么设置视频通话美颜(vivox60怎么设置视频美颜)

    vivos1怎么设置视频通话美颜(vivox60怎么设置视频美颜)

  • 520红包能随意发吗(520红包能随意发送吗)

    520红包能随意发吗(520红包能随意发送吗)

  • 苏宁自营是什么意思(苏宁自营店是什么意思?)

    苏宁自营是什么意思(苏宁自营店是什么意思?)

  • 钉钉直播回放保存多久(钉钉直播回放保存时间设置)

    钉钉直播回放保存多久(钉钉直播回放保存时间设置)

  • r5m420相当于什么显卡(r5m4202g)

    r5m420相当于什么显卡(r5m4202g)

  • 淘宝送的vip影视卡是什么(淘宝送的vip影视怎么用)

    淘宝送的vip影视卡是什么(淘宝送的vip影视怎么用)

  • 输入对方手机号能找到对方的位置吗(输入对方手机号就能跟踪)

    输入对方手机号能找到对方的位置吗(输入对方手机号就能跟踪)

  • 数据加密方法有哪三种(数据加密方法有哪几种)

    数据加密方法有哪三种(数据加密方法有哪几种)

  • 手机格式化后如何恢复数据(手机格式化后如何激活手机)

    手机格式化后如何恢复数据(手机格式化后如何激活手机)

  • 手机蓝牙打印机怎么用(手机蓝牙打印机多少钱)

    手机蓝牙打印机怎么用(手机蓝牙打印机多少钱)

  • 拼多多宝贝id怎么看(拼多多商品id怎么找宝贝)

    拼多多宝贝id怎么看(拼多多商品id怎么找宝贝)

  • ios13可以隐藏app吗(ios13.3怎么隐藏软件)

    ios13可以隐藏app吗(ios13.3怎么隐藏软件)

  • 抖音删了评论对方能看到嘛(抖音删评论对方会收到吗)

    抖音删了评论对方能看到嘛(抖音删评论对方会收到吗)

  • 快手mcn入驻条件(快手加入mcn有什么坏处)

    快手mcn入驻条件(快手加入mcn有什么坏处)

  • 小米运动注册地区选择(小米运动注册地址在哪里)

    小米运动注册地区选择(小米运动注册地址在哪里)

  • pr导出mxf格式如何设置码率(pr里导出mp4格式)

    pr导出mxf格式如何设置码率(pr里导出mp4格式)

  • 苹果8p信号不好怎么弄(苹果8信号不好怎么解决)

    苹果8p信号不好怎么弄(苹果8信号不好怎么解决)

  • 怎么看微信年龄(怎么看微信年龄多大)

    怎么看微信年龄(怎么看微信年龄多大)

  • p30有虚拟按键吗(p30有虚拟按键吗怎么设置)

    p30有虚拟按键吗(p30有虚拟按键吗怎么设置)

  • 7纳米芯片是什么概念(7纳米芯片什么时候上市)

    7纳米芯片是什么概念(7纳米芯片什么时候上市)

  • 老年机为什么打不出去电话(老年机为什么打过去是关机)

    老年机为什么打不出去电话(老年机为什么打过去是关机)

  • 宝塔Linux面板安装及命令大全,PHP启动/停止/重启/启载及安装目录配置说明(宝塔linux面板怎么安装)

    宝塔Linux面板安装及命令大全,PHP启动/停止/重启/启载及安装目录配置说明(宝塔linux面板怎么安装)

  • 为什么手机连不上wifi?手机连不上wifi是怎么回事(为什么手机连不上热点)

    为什么手机连不上wifi?手机连不上wifi是怎么回事(为什么手机连不上热点)

  • 在win7系统中无法创建文件夹怎么办?(win7系统为什么没有无线网络连接)

    在win7系统中无法创建文件夹怎么办?(win7系统为什么没有无线网络连接)

  • mac怎么删除应用程序?苹果电脑删除软件方法介绍(mac怎么删除应用程序中没有的软件)

    mac怎么删除应用程序?苹果电脑删除软件方法介绍(mac怎么删除应用程序中没有的软件)

  • 税务迁移麻烦吗
  • 税务师考试2023年考试时间
  • 债务重组计入哪项科目
  • 销项发票导出格式不对怎么办
  • 办公家具可以一次性税前扣除吗
  • 小规模纳税人建筑服务税率是多少
  • 公司为其他企业提供担保,担保对象可以是公司股东吗
  • 利得和损失计入所有者权益
  • 赠送产品能直接用吗
  • 如何简单区分坏人和坏人
  • 投资公司的投资人叫什么
  • 证券公司转让价格
  • 交通违章罚款有优惠吗
  • 建筑行业增值税税率是多少
  • 应收票据借方表示负债吗
  • 地方水利建设基金的会计分录
  • 车船税交给谁了
  • 一般纳税人简易征收范围
  • 普通机打发票可以抵税吗
  • 代扣代缴的社保需要计提吗
  • 贸易公司收到货款会计分录
  • 建筑企业建筑业
  • 固定资产的残值怎么算出来的
  • 工程费用包括哪几类
  • 个人股权转让印花税在哪里申报
  • 1697509110
  • 不动产广告位出租税率是多少
  • 兼职劳务报酬要交个税吗
  • 计提理财利息分录
  • 丢失空白发票怎么处罚
  • 小规模餐饮企业增值税申报表填写
  • win7缓存设置方法
  • 个人销售自己使用过的物品免征增值税
  • mac睡眠后无法正常唤醒
  • 低值易耗品报废账务处理
  • 银行手续费未开发票
  • 零星采购无票怎么办
  • 工业企业制造费用包括
  • 优化器总结
  • chatb
  • 牛客前端刷题怎么样
  • php mysql procedure实现获取多个结果集的方法【基于thinkPHP】
  • hashmap教程
  • discuz论坛无法登录
  • 开办费的主要账户是什么
  • 购入固定资产的会计科目
  • 出售汽车固定资产要交什么税
  • 百旺金赋怎么开红字发票
  • 印花税实际缴纳时计入
  • 非营利组织也被称为?
  • 销项税用转出吗
  • 固定资产资本化后续支出
  • 无形资产的后续支出,金额较大的应增加无形资产的价值
  • 长期股权投资的账务处理
  • 教育费附加计入其他应付款吗
  • 多缴附加税款账务处理
  • 联营公司是关联方吗
  • 会计利润的计算公式是
  • mysql random函数
  • linux在服务器领域的应用状况
  • centos6创建文件
  • warning bios upgrade
  • linuxsu命令作用
  • linux wechat
  • xp局域网文件共享设置
  • win7打开游戏显示已停止工作
  • linux怎么设置桌面
  • linux查看所有硬件信息命令
  • win10更新只能暂停35天
  • css实战手册
  • node.js server-side
  • JavaScript instanceof 的使用方法示例介绍
  • linux查看端口占用情况并杀掉进程
  • javascript教程 csdn
  • 青海国税发票查询系统
  • 个税更正申报如何导出大厅申报表
  • 计征土地增值税时需要以评估价格来确定
  • 2021西安雁塔区第一幼儿园运动会
  • 四川企业退休人员80岁高龄补贴
  • 受让企业与转让企业区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设