vue路由的两种模式 hash与history

这篇具有很好参考价值的文章主要介绍了vue路由的两种模式 hash与history。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

哈希路由,js,vue.js,哈希算法,前端


vue路由是什么?

Vue 路由是 Vue.js 框架提供的一种机制,用于实现单页面应用(Single-Page Application,简称 SPA)中的前端路由功能。它允许通过定义不同的路由路径和对应的组件,来管理应用程序中不同页面或视图的展示和切换。

Vue 路由使用了浏览器的 History API 或 hash(#)来实现路由导航。通过配置路由映射关系,将 URL 的不同路径与对应的 Vue 组件关联起来。当用户点击链接或执行特定操作时,Vue 路由可以动态地加载所需的组件并更新页面内容,而无需重新加载整个页面。这样,用户可以在单页应用中快速、平滑地切换页面,获得更好的用户体验。

在 Vue 路由中,可以定义多个路由,并指定每个路由对应的路径和组件。可以通过编程式导航或声明式导航的方式,根据具体的需求,在不同的组件之间切换路由。Vue 路由还支持参数传递、路由守卫、嵌套路由等功能,以满足复杂的应用场景。

使用 Vue 路由,可以轻松构建交互丰富、界面流畅的单页面应用,有效管理页面之间的导航和状态切换。

Vue的路由有两种模式:Hash 模式和 History 模式。


Hash 模式

在这种模式下,URL 中的路由路径会以 # 符号作为分隔符。例如,http://example.com/#/home。
Hash 模式的好处是它不会触发页面的刷新,所有的路由都在客户端进行处理,并且兼容性较好,可以在不同的浏览器和服务器配置中使用。

Vue 路由的 Hash 模式是通过修改 URL 中的哈希(hash)部分来实现的。在 Hash 模式下,URL 中的路由路径会以 # 符号作为分隔符。例如,http://example.com/#/home。

当用户切换路由时,Vue 路由会监听 URL 的 hashchange 事件,一旦 URL 的哈希部分发生变化,它就会根据新的哈希值找到对应的路由配置,并动态地加载所需的组件并更新页面内容,形成页面无刷新的效果。

所以,在使用 Hash 模式时,每次切换路由都会修改 URL 的哈希部分,而不会改变实际的 URL 路径,因此刷新页面或直接访问某个子路由时,需要保证服务器能正确响应前端路由请求,返回正确的页面内容。

Hash具体的原理如下:
  1. Vue 路由会创建一个全局的监听器,监听浏览器的 hashchange 事件。
  2. 当用户点击链接或执行特定操作时,Vue 路由会将对应的路由路径解析出来,并将该路径的哈希部分设置为当前 URL 的哈希部分。例如,点击了一个链接,将路由路径 ‘/home’ 解析出来,然后将 ‘home’ 设置为 URL 的哈希部分,即 http://example.com/#/home。
  3. 浏览器会自动触发 hashchange 事件,Vue 路由监听到事件后,根据新的哈希值找到对应的路由配置,并根据配置信息动态加载对应的组件,更新页面内容,完成路由导航的过程。
Hash 模式的好处
  • 不会触发页面的刷新
  • 所有的路由都在客户端进行处理
  • 并且兼容性较好
  • 可以在不同的浏览器和服务器配置中使用
缺点

但同时,URL 中的 # 符号可能对SEO不太友好,并且在 URL 中出现了冗余信息。


History 模式

在这种模式下,URL 中的路由路径没有 # 符号,看起来更加美观。例如http://example.com/home。
History 模式依赖 HTML5 的 History API,它通过修改浏览器的历史记录来实现前端路由的切换。与 Hash 模式相比,History 模式的 URL 更加友好,但需要服务器配置支持,确保在每个路由都返回正确的页面,即使在刷新页面或直接访问某个子路由时也能正常工作。

在 Vue 中,默认采用的是 Hash 模式,你可以通过配置 mode: ‘history’ 来启用 History 模式,同时需要在服务器端进行相应的配置,以确保在各种情况下都能正确响应前端路由请求。

总结一下,Hash 模式使用 # 符号,不会触发页面刷新,兼容性较好;History 模式去除了 # 符号,需要服务器配置支持,URL 更加友好。

实现 History 模式的原理如下:
  1. 当用户访问一个 Vue 路由应用时,服务器需要配置一个默认页面(比如 index.html),用于处理与前端路由相关的请求。
  2. 当用户切换路由时,Vue 路由会调用浏览器的 History API,通过 pushState 或 replaceState 方法修改当前的历史记录,并将新的路径添加到浏览器的历史栈中。
  3. Vue 路由还会监听 popstate 事件,当用户点击浏览器的前进或后退按钮时,会触发该事件,Vue 路由会根据新的路径找到对应的路由配置,并动态地加载所需的组件并更新页面内容,完成路由导航的过程。

在 History 模式下,服务器需要正确配置,确保在直接访问某个子路由时返回应用的默认页面(比如 index.html),这样前端路由才能接管路由请求并正确展示对应的页面内容。

History 模式的好处

History 模式相比于 Hash 模式更加符合传统的 URL 形式,没有冗余的 # 符号,对搜索引擎更友好。

缺点

但需要注意的是,在使用 History 模式时,服务器需要正确配置以处理前端路由请求,并且要注意兼容性,因为一些旧版本的浏览器可能不支持 History API。如果在不支持的情况下,Vue 路由会自动降级到 Hash 模式来保证路由功能的正常运行。文章来源地址https://www.toymoban.com/news/detail-692857.html

到了这里,关于vue路由的两种模式 hash与history的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端路由hash模式以及history模式详解

    在前后端分离的项目中,前端一般使用 SPA 单页面应用模式来开发项目。那么,什么是 SPA 呢? 单页Web应用(single page web application,SPA),就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。 我的理解: 单页面应用就是

    2024年02月10日
    浏览(31)
  • 解密前端路由: hash模式vs.history模式

    当你构建一个网站时,可能会遇到如何处理 URL 的问题。在URL中,有两种常见的模式: hash模式和history模式 。 1. Hash模式(哈希模式): 在 hash 模式中, URL 中的 hash (即#号后面的部分)用于标记网页的不同部分或状态。当 URL 的 hash 发生改变时,页面不会重新加载,而是通

    2024年02月11日
    浏览(37)
  • 路由的hash和history模式的区别

    目录 ✅ 路由模式概述 一. 路由的hash和history模式的区别 1. hash模式 2. history模式 3. 两种模式对比 二. 如何获取页面的hash变化 单页应用是在移动互联时代诞生的,它的目标是不刷新整体页面,通过地址栏中的变化来决定内容区域显示什么内容。 要达成这个目标,我们要用到前

    2024年02月14日
    浏览(28)
  • Vue history和hash模式

             ~~~~~~~~                 在Vue.js中,路由模式是用来管理应用程序中不同页面之间的导航的机制。Vue Router支持两种常见的路由模式:history模式和hash模式。 History 模式:          ~~~~~~~~                 History模式使用浏览器的history.pushState API 来管理路由。它

    2024年02月12日
    浏览(26)
  • vue3中路由hash与History的设置

     history模式直接指向history对象,它表示当前窗口的浏览历史,history对象保存了当前窗口访问过的所有页面网址。URL中没有#,它使用的是传统的路由分发模式,即用户在输入一个URL时,服务器会接收这个请求,并解析这个URL,然后做出相应的逻辑处理。 当使用history模式时,

    2024年02月16日
    浏览(56)
  • Vue-router中的Hash模式与History模式

    在Vue Router中,Hash模式是一种URL的哈希模式,也被称为锚点模式。在Hash模式下,URL中的哈希部分(即#号后面的内容)会被用作路由的标识符,而不会触发浏览器向服务器发送请求。 Hash模式的URL示例: http://example.com/#/home 在Hash模式下,Vue Router会监听URL中哈希部分的变化,并

    2024年02月15日
    浏览(34)
  • Vue3 Vue-Router详解 Vue3配置hash 和 history路由、Vue3封装的路由hook函数(useRouter,useRoute)的使用 路由懒加载、路由分包处理、魔法注释的使用

     html部分 js部分  html页面使用路由传来的参数  获取router跳转id 获取 路由跳转错误地址

    2024年02月11日
    浏览(34)
  • VUE 配置history路由模式配置

    vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。 如果不想要很丑的 hash,我们可以用路由的 history 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面。 当你使用 history 模式时,URL 就像正常

    2024年02月10日
    浏览(34)
  • Vue路由模式(history模式 刷新页面空白解决方案)

    vue路由的三种模式 Hash模式 、 History模式 、 abstract 模式 Vue3: Hash 模式是用 createWebHashHistory() 创建的: Vue2 它在内部传递的实际 URL 之前使用了一个哈希字符(#)。由于这部分 URL 从未被发送到服务器,所以它不需要在服务器层面上进行任何特殊处理。不过,它在 SEO 中确实有

    2024年02月12日
    浏览(49)
  • hash 模式和 history 模式的实现原理

    #后面的 hash 值的变化不会导致浏览器向服务器发出请求,浏览器不发出请求,就不会刷新页面。通过监听 hashchange 事件的变化可以知道 hash 值发生了哪些变化,然后根据 hash 值的变化来实现更新页面部分内容的操作 history 模式的实现主要是通过 HTML5 标准发布的两个 api,pus

    2024年02月14日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包