首页 > 其他分享 >createWebHistory路由和createWebHashHistory路由

createWebHistory路由和createWebHashHistory路由

时间:2023-11-25 22:32:26浏览次数:30  
标签:浏览器 createWebHistory URL 路由 哈希 hash createWebHashHistory history

一、createWebHistory和createWebHashHistory的区别

vue中常用的两种路由模式:hash路由模式和history路由模式。

hash路由模式
  1. URL 示例:http://example.com/#/path
  2. 使用 URL 中的哈希(#)部分来模拟路由。
  3. 哈希部分的改变不会触发页面刷新,因此称为前端路由。
  4. 在单页应用中,前端路由器会监听 URL 的哈希变化,并根据不同的哈希值来渲染相应的组件或页面内容。
  5. 哈希路由可以通过修改 location.hash 的方式来改变当前的路由。
  6. hash原理:onhashchange事件,可以在window对象上监听这个事件(每次hash值的变化,都会出发hashchange事件,通过这个事件我们就可以知道hash值发生了哪些变化,通过监听hashchange来实现更新页面部分内容操作)
  7. hash“#”后的值,不会包含在http请求中,改变hash的值不会引起页面的重新加载(他是前端路由交互处理,#后面hash值变化不会导致浏览器像服务器发送请求,浏览器不发送请求,也就不会刷新页面);
  8. 会创建hashhistory对象,在访问不同的路由会发生两种事件:hashhistory.push():将新的路由添加到浏览器访问的历史栈顶,hashhistory.replace()替换到当前栈
  9. hash可以兼容到ie8以上

优点:兼容性好,可以在不支持 HTML5 History API 的浏览器中正常运行。

缺点:URL 中带有哈希部分,不够美观,且哈希部分对搜索引擎的抓取和索引不友好。

createWebHistory路由和createWebHashHistory路由_hash路由模式

import {createRouter,createWebHashHistory} from "vue-router"
import HelloWorld from '../components/HelloWorld.vue'
import WelcomeItem from '../components/WelcomeItem.vue'
    
const router = createRouter({
    history:createWebHashHistory(),
    routes:[
        {   
            path:"/",
            component: HelloWorld
        },
        {
            path:"/we",
            component: WelcomeItem
        }
    ]
})

export default router
history模式:
  1. URL 示例:http://example.com/path
  2. 使用 HTML5 的 History API 来管理路由。
  3. 通过修改浏览器的历史记录状态,实现前端路由。
  4. 可以使用 history.pushState() 和 history.replaceState() 方法来改变当前的路由状态,而不会触发页面刷新。
  5. 前端路由器会监听 URL 的变化,并根据不同的路由状态来渲染对应的组件或页面内容。
  6. history依赖于前后端交互,即将url修改的就和正常请求的后端url一样,如后端没有配置对应的/user/id的路由处理,就会返回404错误;
  7. history原理:onpopstate事件,当浏览器跳转到新的状态时会触发popstate事件;
  8. history可以兼容到ie10;

优点:URL 更加美观,不带有哈希部分,对搜索引擎友好。

缺点:需要浏览器支持 HTML5 History API,不兼容旧版本的浏览器。

在实际开发中,可以根据项目需求和浏览器兼容性考虑选择使用 Hash 路由还是 History 路由。同时,也可以使用前端框架(如 Vue Router 或 React Router)来抽象和简化路由的管理和切换过程。同时建议在生产环境中使用History,在开发环境中使用Hash

createWebHistory路由和createWebHashHistory路由_hash路由模式_02

import {createRouter,createWebHistory} from "vue-router"
import HelloWorld from '../components/HelloWorld.vue'
import WelcomeItem from '../components/WelcomeItem.vue'
    
const router = createRouter({
    history:createWebHistory(),
    routes:[
        {   
            path:"/",
            component: HelloWorld
        },
        {
            path:"/we",
            component: WelcomeItem
        }
    ]
})

export default router

标签:浏览器,createWebHistory,URL,路由,哈希,hash,createWebHashHistory,history
From: https://blog.51cto.com/u_16373718/8562572

相关文章

  • 前端框架vue路由hash模式与history模式的区别
    hash模式会在页面初始化的时候,url后面会带上/#的hash值,后面是路由组件加携带参数,缺点是看起来不太美观,但相比于history模式来说,它具有用户在页面各种点击操作后,点击刷新后数据不丢失,也不会出现网络报错。而history模式优点是能让整个url看起来比较简洁美观,但问题就是项目部署上线......
  • 【Django基础】urls路由
    简单示例fromdjango.urlsimportpathfrom.importviewsurlpatterns=[path('articles/2003/',views.special_case_2003),path('articles/<int:year>/',views.year_archive),path('articles/<int:year>/<int:m......
  • 若依 vue前端 动态设置路由path不同参数 在页面容器里打开新页面(新路由),面包屑和标签页
    若依vue前端动态设置路由path不同参数在页面容器里打开新页面(新路由),面包屑和标签页标题根据参数动态改变,面包屑多级标题,侧边栏对应菜单亮起:https://blog.csdn.net/weixin_43991241/article/details/126319259?ops_request_misc=&request_id=&biz_id=102&utm_term=matched.redir......
  • Vue实现动态路由导航
    Vue实现动态路由导航:https://blog.csdn.net/weixin_65950231/article/details/128983010?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522170080675716800186579799%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=17008067571680018657......
  • 解决Spring Cloud Gateway路由问题 503
    近期在配置SpringCloudGateway进行路由时,遇到了一些问题,经过一番排查和调试,最终解决了问题。在这篇博客中,我将分享遇到的问题、解决过程以及最终的解决方案。问题背景我使用SpringCloudGateway构建微服务架构时,希望通过网关实现请求的路由。然而,在配置路由规则时,我遇到......
  • tls 握手时被公司路由器网关阻断
    经过一天的研究发现当tcp三次握手成功后,客户端向服务端发送clienthello包时被网络出口网关设备立即返回RST包。客户端日志立即打印如下:随即tls建立连接失败。[2023-11-2317:47:55][ERROR]127.0.0.1:59998SSLhandshakefailedwithigcc.cc:9120:Connectionresetbypeer......
  • 移动光猫拨号(路由模式)下的IPV6获取方式
    按图设置即可1、设置拨号连接,获取前缀2、将前缀填写到用户侧的IPV6设置里3、测试ipv6 或者:在哪里获取前缀,前缀在哪里出现的 设置完,等候5分钟,去状态页找前缀信息。......
  • Vue自定义页面路由
    错误1:webpackEmptyContext(evalat./src/store/modulessyncrecursive(0.js:10),<anonymous>:2:10)路由信息由后端给出,那么前端需要动态加载路由,同时component的路径也是后端给出,但是动态加载该路径会报错//假如path='@/views/user'constcom=()=>import(path)//这......
  • Golang Gin 请求参数的获取值 & 路由分组 & 控制器继承
    一. 请求参数的获取值  动态路由1typeUserstruct{2Usernamestring`form:"username"json:"username"`3Passwordstring`form:"password"json:"password"`4Ageint`form:"age"json:"......
  • 使用ensp搭建路由拓扑,并使用BGP协议实现网络互通实操BGP路由协议学习一
    1.使用ENSP搭建的网络拓扑如下:         数据准备:设备名称接口IP地址DeviceALoopback01.1.1.1/32Eth 1/0/0172.16.0.1/16Eth0/0/0192.168.0.1/24DeviceBLoopback02.2.2.2/32Eth 0/0/110.1.1.1/24GE0/0/0192.168.0.2/24Eth 0/0/010.1.3.1/24DeviceCLoopbac......