• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > 浅析Vue中hash路由和history路由的区别

浅析Vue中hash路由和history路由的区别

作者:站长图库 字体:[增加 减小] 来源:互联网 时间:2022-04-29

站长图库向大家介绍了hash路由,history路由,Vue路由等相关知识,希望对您有所帮助

使用 Vue 或者 React 等前端渲染时,通常会有 hash 路由和 history 路由两种路由方式。那么这两种路由方式有什么区别?下面给大家介绍一下,希望对大家有所帮助!


浅析Vue中hash路由和history路由的区别


hash路由和history路由这两种模式的区别,从以下几个方面梳理一下吧:

一、颜值

hash: 即地址栏 URL 中的#符号。 比如这个 URL:http://www.abc.com/#/hello, hash 的值为 #/hello。它的特点在于:hash 虽然出现在 URL 中, 但不会被包括在 HTTP 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面。

history: 地址栏中没有 #。比如这个 URL:http://www.abc.com/hello,更美观,是个正常的url,适合推广宣传。

二、功能

history: 在开发app的时候有分享页面,这个分享出去的页面就是用vue或是react做的,咱们把这个页面分享到第三方的app里,有的app里面url是不允许带有#号的,所以要将#号去除那么就要使用history模式,但是使用history模式还有一个问题就是,在访问二级页面的时候,做刷新操作,会出现404错误,那么就需要和后端人配合,让他配置一下apache或是nginx的url重定向,重定向到你的首页路由上就好了。

三、回车刷新

hash: 虽然出现在 URL 中,但不会被包括在 HTTP 请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面;

history: 利用了 HTML5 History Interface 中新增的 pushState() 和replaceState() 方法。

这两个方法应用于浏览器的历史记录栈,在当前已有的 back()、forward()、go() 方法的基础之上,这两个方法提供了对历史记录进行修改的功能。当使用这两个方法执行修改时,只能改变当前地址栏的 URL,但浏览器不会向后端发送请求,也不会触发popstate事件的执行,一般会出现404,这时候就需要和后端人配合,设置重定向。

四、使用场景

一般情况下,hash 和 history 都可以,如果你是个颜值控,对 # 符号夹杂在 URL 里有些不爽。

如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成URL 跳转而无须重新加载页面。调用 history.pushState() 相比于直接修改 hash,存在以下优势:

pushState() 设置的新 URL 可以是与当前 URL 同源的任意 URL;而 hash 只可修改 # 后面的部分,因此只能设置与当前 URL 同文档的 URL;

pushState() 设置的新 URL 可以与当前 URL 一模一样,这样也会把记录添加到栈中;而 hash 设置的新值必须与原来不一样才会触发动作将记录添加到栈中;

ushState() 通过 stateObject 参数可以添加任意类型的数据到记录中;而 hash 只可添加短字符串pushState() 可额外设置 title 属性供后续使用。

五、总结

传统的路由是,当用户访问一个url时,对应的服务器会接收这个请求,然后解析url中的路径,从而执行对应的处理逻辑,这样就完成了一次路由分发。

前端路由是不涉及服务器的,是前端利用hash或者HTML5的history API来实现的,一般用于不同内容的展示和切换。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 浅析Vue中hash路由和history路由的区别

相关文章

  • 2022-04-29纯CSS使图片有放大效果代码
  • 2022-04-29如何在PHP中获取数组单元数量
  • 2022-04-29Photoshop制作颓废的彩色立体字
  • 2022-04-29Photoshop制作立体效果的草莓艺术字
  • 2022-04-29AI绘制质感电池图标
  • 2022-04-29手把手教你在小程序中怎么实现悬浮按钮(代码示例)
  • 2022-04-29帝国CMS下载地址不用弹窗修改方式
  • 2022-04-29怎么从微信卡包跳转到小程序?实现方法浅析
  • 2022-04-29聊聊node中怎么借助第三方开源库实现网站爬取功能
  • 2022-04-29PHPcms远程图片本地化增加图片类型和后缀的方法

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • php base64如何进行URL字符串编码和解码?
    • Laravel中三种中间件的作用
    • Vue 手势组件教程
    • 聊聊Bootstrap5中的断点与容器
    • vue.js如何实现数字滚动增加效果?代码示例
    • php htmlentities 乱码怎么办
    • 关键词组合的SEO优化策略
    • 设计师应该从四个方面优化网站
    • 聊聊怎么在小程序中实现一个可截断的瀑布流组件
    • 实例详解之怎样使用css实现3D穿梭效果

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有