vuejs中路由器的两种模式-哈希模式与历史模式

JavaScript的路由 JavaScript的hash路由和history的实现方式! 阅读详情

虽互不曾谋面,但希望能和您成为笔尖下的朋友

以读书,技术,生活为主,偶尔撒点鸡汤

不作,不敷衍,意在真诚吐露,用心分享

点击左上方,可关注本刊

标星公众号(ID:itclanCoder)

如果不知道如何操作

点击这里,标星不迷路

b63ad38defddd26ca3865d0e7f5efab8.png

前言

路由器分别有两种模式,一种是hash模式,另一种是history模式,在使用vue-cli以及vue-router默认搭建的vue项目,如果不做特殊的配置,默认就是hash模式

这两种模式各有自己的优势,但他们的使用区别,却多多少少都会在面试当中被问到

今天就一起来学习下

998b1c340d575fe13959ffecc6fe0581.gif

01

哈希模式(hash)

vue-router默认hash模式,使用url的哈希(hash)来模拟一个完整的URL,当URL改变时,页面不会重新加载

如下所示

http://localhost/#home

特点: #号后面的参数不会传送给服务器,兼容性好,不会作为路径的一部分发送给服务器,也就是它不会包括在HTTP请求体中,对后端完全没有影响,只是我们前端同学自己玩

页面刷新时,会停留在当前页面,不会重新加载

如果觉得hash路径很丑,不简洁,我们可以用路由的history模式,这种模式充分利用history.pushState API或replaceState,来完成,url跳转而无需重新加载页面

f76b912c9db52813168c572710e0dc27.gif

02

历史模式

history模式:在实例化配置对象中添加mode模式,值为history就可以了的 经过改造后,hash模式就会变成history模式

const router = new VueRouter({
  mode: 'history',
  routes: [...]
})

这两种方式的使用都是没啥问题的,如果你在意浏览器url的颜值,#符号掺杂在url里看起来确实有些不优雅

如果你想url更好看,那么就使用history模式

但是:在hash模式下,使用hash符号之前的内容会被包含在请求体中,#号后面的不会发送给服务器

而history模式下,前端的URL必须和实际向后端发起请求的URL保持一致

如:https://itclan.cn/fontend/id,如果后端缺少没有对/fontend/id的路由处理,那么它将返回404错误

如果你想要支持history模式,那么需要后端同学支持,想要彻底解决404的问题,需要与后端同学协商,因为需要后端与前端路由做匹配

在服务端增加一个覆盖所有情况的时候的候选资源,如果url匹配不到任何静态资源,应该返回一个首页页面

如果出现404,容易让用户觉得这是一个Bug

1a3842d040f66cede63230e3f8ca95ad.gif

03

404问题

如何解决前台刷新页面404问题

解决这个问题:如果你用的是Node做后端服务,那么在Node后台中可以加入一个中间件比如:connect-history-api-fallback即可解决这种404问题

如果是java或php,找后端同学,让后端路由与前端路由做匹配,或是用Ngnix做中间代理

如下这段简易的Node服务代码,可以命名为server.js,同时安装express以及connect-history-api-fallback中间件

启动后端服务执行命令node server.js

const express = require('express');
const history = require('connect-history-api-fallback')

const app = express()
app.use(history())
app.use(express.static(__dirname+'/static'));


app.listen(5005,(err)=> {
  if(!err)consle.log('服务器启动成功了')
})

把前端打包生成的dist文件内的代码,放到static中,通过这一操作,即可解决刷新页面,404的问题

59f70acdff46be1f6fa98fee5d822c08.gif

04

对单页面应用理解

我们的前端使用的vue-router中的两种模式,就是单页面应用,整个应用只有一个router路由器,是可以通过$router属性获取到

也就是说,整个应用只有一个完整的页面,同时,点击页面中的导航链接,不会刷新页面,只会是页面的局部更新

而我们页面中的数据,往往需要通过ajax请求来获取

现在开发的新项目,都是前后端分离,基本上都是单页面应用

总结

前端路由,有两种模式,一种是hash模式,另一种是history模式,其中hash模式是默认模式,#后面的不会发送给服务端,不会重新刷新加载页面,而history模式,url虽然比较好看,但是想要完整支持,需要后端同学提供支持,后端路由与前端的路由需要做匹配

否则部署到线上,一刷新页面,会出现404的问题

vuejs中路由的嵌套

2022-08-03

c36b8bd95d0ad4eb36d118a1fe666424.jpeg

vuejs中全局前置路由守卫-全局后置路由守卫及独享路由守卫-组件内的守卫

2022-07-31

cd033542df01ae592df5a0be6cb17313.jpeg

vuejs中如何实现路由切换及路由的缓存

2022-07-28

0d627e163f1d57e081713a3dd61bd1c4.jpeg

VueJs中的编程式导航VS声明式导航

2022-07-20

fe933f8de9c949efc39633970a9437b5.jpeg

vuejs中路由的传参以及路由props配置

2022-07-17

22c6ce8a136096bff441b092658100f5.jpeg


c93a002fb59cc8c109c63c501601a531.jpeg

点个在看你最好看

aaa8a08467d4bedb02f928e9ec735c83.png

1ed251ab46b427c8c81858af14c053a7.png

dd451cdf657104d1bf3788ee7b2b9c9b.png

点击下方阅读原文可了解更多

【vue-router】---原生js实现两种路由模式 目录 一、hash模式 二、history模式 三、hash模式和history模式的区别 我们在vue中用的路由其实也是用原生的js封装的,本文总结两种路由模式的原生写法,总结两者的实现的原理和区别 Vue两种前端路由(hash模式和history模式)实现原理解析及区别 一、hash模式 hash值变化浏览器不会重新发起请求,但是会触发window.hashChange事件,假如我们在hashChange事件中获取当前的hash值,并根据hash值来修改页面内容,则达到了前端路由的目的 阅读详情

相关推荐

Vue-Router的Hash模式简介与分析

Vue-Router是Vue.js官方推荐的路由管理器,用于构建单页应用程序(SPA)。它允许我们在Vue应用中实现路由功能,从而实现页面之间的无刷新切换。Vue-Router提供了多种路由模式,其中之一是Hash模式。Hash模式是Vue-Router的默认路由模式,它通过URL的哈希(#)来管理路由。当URL的哈希发生变化时,Vue-Router会根据哈希值来匹配对应的路由,并加载相应的组件。

RoGroovy的博客 803

VUE的hash路由模式

router-view标签就是确定路由位置的 一般放置在APP.vue文件里 路由位置 vue-router 路由模式分为三种 hash history abstract hash路由就是: 跳转的位置是#加上后面的字符 类似于 可以通过控制台location.hash查看当前hash是多少 ** 路由的使用** 在App中设置 <!-- 用于存放路径的组件--> <router-view></router-view> 然后在router/index.js 中添

qq_35417353的博客 5233

前端开发:vue-router的使用以及两种模式的区别

前言 在前端开发中,使用Vue做项目的时候关于路由的管理处理是非常重要的知识点,路由的管理也是比较常用的,做前端开发的都知道SPA,通过唯一一个HTML页面完成所有组件的展示和切换,不同组件之间的切换需要通过路由来实现。vue-router是Vue的官方路由插件,为的就是Vue单页面开发的路由,处理页面跳转的,那么本篇博文就来分享一下关于vue-router相关的知识点,该知识点在前端求职面试中也是高频考察知识点,这里总结一下,方便查阅使用。 vue-router概念  router的中文释...

全沾软贱开发攻城狮 1万+

vue-router的两种模式(hash和history)及区别

为什么要有hash 和history? 对于Vue这类渐进式前端开发框架,为了构建SPA(单页面应用),需要引入前端路由系统,这也就是Vue-Router存在的意义。前端路由的核心,就在于——改变试图的同时不会向后端发出请求。 为了达到这一目的,浏览器当前提供了一下两种支持: 1:hash - 即地址栏URL中的 # 符号(此hash不是密码学里的散列运算) 比如这个URL:http://www....

H_c_l的博客 1万+

游戏开发实战:如何在Unity中实现六边形网格地图(附完整代码)

本文详细介绍了在Unity中实现六边形网格地图的完整开发流程,从数学原理到实战代码。涵盖三种主流坐标系转换方法、距离计算算法对比、网格生成与渲染技巧,以及高级功能如网格高亮、寻路算法和性能优化策略。适合策略游戏、战棋类游戏开发者提升地图系统开发效率。

652

【点云数据集】整理汇总(自用,更新ing)

涵盖了各种不同的城市场景:教堂、街道、铁路轨道、广场、村庄、足球场、城堡等等。邮件地址:dmich-request@graphics.stanford.edu,内容需包含:1. 您的姓名、头衔或职位,以及所在机构或隶属关系;license比较难获取,目前可获取的人员:(1)目前隶属于大学、工业研究实验室或其他主要机构的已发表过研究成果的研究人员;普林斯顿 ModelNet 项目的目标是为计算机视觉、计算机图形学、机器人技术和认知科学领域的研究人员提供全面、干净的物体 3D CAD 模型集合。

weixin_44392103的博客 797

关于vue-router的历史模式和hash模式

首先了解下 window.location对象 打开浏览器在控制台打印 路由在未交由前端管理之前都是后台控制 你请求不同的路径,后台就甩回不同的html页面回来作为回应。你请求a我就给你a,你请求不存在我就给你个404页面 vue-router就是只改变视图,不请求页面。你看到的是假象。实际上请求的都是index.html。 1、Hash模式: hash(#)是URL...

Army-海军的博客 1万+

生信物种注释软件Kraken2+Bracken的安装与使用

一、软件安装与数据库下载 1.Kraken2安装 Kraken2是一个基于k-mer算法的高精度宏基因组序列分类软件,能够快速的将测序reads进行物种分类。 使用conda一键安装,要先安装好anaconda或者miniconda conda install -y kraken2 输入krakek2 --help 出现如下所示帮助文档,则表示安装成功。 2.Bracken安装 bracken是一种从宏基因组数据中高度准确的计算物种丰度的统计方法。 同样使用conda一键安装 conda install -

jileiqwd的博客 1万+

路由器的两种工作模式:hash模式和history模式

路由器的两种工作模式:hash模式和history模式

weixin_66059613的博客 3288

Jetson AGX ORIN硬件初始化和环境部署

orin预安装了ubuntu20.04,只需开机,像重装系统一样设置用户信息即可,可以参考官网的教程[https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit],官网提供了两种方式:一种是orin + 显示器,orin有提供DP接口,你需要准备一台显示器,最好也是有DP口的,因为我用DP转HDMI的连的,分辨率会受影响。确认安装的路径,一般直接回车安装在默认的 /home/你的名字/anaconda3。

TracyGC的博客 3834

MOSFET雪崩特性参数解析

但是,一些电源在输出短路时,初级中会产生较大的电流,加上初级电感,器件就会有雪崩损坏的可能,因此在这样的应用条件下,就要考虑器件的雪崩能量。对于那些在MOSFET的D和S极产生较大电压的尖峰应用,就要考虑器件的雪崩能量,电压的尖峰所集中的能量主要由电感和电流所决定,因此对于反激的应用,MOSFET关断时会产生较大的电压尖峰。雪崩击穿能量标定了器件可以容忍的瞬时过冲电压的安全值,其依赖于雪崩击穿需要消散的能量。EAS单脉冲雪崩击穿能量, EAS标定了器件可以安全吸收反向雪崩击穿能量的高低。

Airer_00的博客 806

Vue路由模式有哪几种?Vue两种路由模式的区别

Vue路由模式有哪几种?Vue两种路由模式的区别

weixin_42064877的博客 1262

手把手教你学Simulink--基于Simulink的近端策略优化(PPO)路径规划仿真建模

本文详细介绍了如何利用Simulink进行近端策略优化(PPO)路径规划的仿真建模。首先,文章概述了PPO路径规划的特点和挑战,强调了其在连续或离散动作空间问题中的高效性和稳定性。接着,列出了所需的工具和环境,包括MATLAB/Simulink、Reinforcement Learning Toolbox等。随后,文章分步骤详细讲解了从定义任务需求到验证与分析的整个仿真建模过程,包括创建Simulink项目、集成智能体模型、构建环境模型、编写PPO路径规划逻辑、将逻辑集成到Simulink模型中以及最终的验

MHD0815的博客 165

Vue的路由实现:hash模式 和 history模式

在 Vue 中,路由的实现通常使用 Vue Router 库。Vue Router 提供了两种路由模式:哈希模式(Hash mode)和历史模式(History mode)。

克里斯蒂亚诺更新的博客 1185

基于STM32LXXX的模数转换芯片ADC(TLA2528IRTER)驱动C程序设计

define TLA2528_ADDR 0x12 << 1 // 用于HAL传输的8位地址(写入为0x24,读取为0x25)// 100kHz (示例值,需根据实际时钟计算)#define TLA2528_REG_PIN_CFG 0x00 // 引脚配置寄存器。#define TLA2528_REG_CHN_SEL 0x01 // 通道选择寄存器。

myron6688的博客 229

从0到1:OpenClaw 助力单元测试代码自动化与覆盖率飞升

OpenClaw 的横空出世,宛如一道曙光,照亮了这片黑暗的领域。它作为一款强大的本地 AI 助手,拥有着令人惊叹的能力。OpenClaw 能够深入理解代码的逻辑结构,自动分析代码中的各种功能和潜在的风险点,从而精准地生成高质量的单元测试代码。它就像是一位不知疲倦的测试专家,能够快速、准确地完成那些繁琐的测试编写工作,将开发者从重复劳动中解放出来,让他们能够将更多的精力投入到更具创造性和价值的工作中。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 477

​不同的历史模式

不同的历史模式# 在创建路由器实例时,history配置允许我们在不同的历史模式中进行选择。 Hash 模式# hash 模式是用createWebHashHistory()创建的: import { createRouter, createWebHashHistory } from 'vue-router' const router = createRouter({ history: createWebHashHistory(), routes: [ //... ],...

m0_52796585的博客 81

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

vue-router H5模式和Hash模式

在创建路由器实例时,history 配置允许我们在不同的历史模式中进行选择。它在内部传递的实际 URL 之前使用了一个哈希字符(#)。由于这部分 URL 从未被发送到服务器,所以它不需要在服务器层面上进行任何特殊处理。不过,它在 SEO 中确实有不好的影响。如果你担心这个问题,可以使用 HTML5 模式。

sunshine的博客 668

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【Vue】Vue2路由

Vue2中的路由

低调做人,低调编码,神码都是浮云 1803

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Vue3.0路由模式切换实战:从哈希到历史的完整迁移指南(附常见问题解决)

本文提供了Vue3.0项目从哈希模式迁移到历史模式的完整实战指南。详细阐述了两种路由模式的核心差异、迁移步骤(包括配置修改、构建调整和代码清理),并重点解决了历史模式下的服务器部署适配问题,帮助开发者优化URL结构,提升用户体验与SEO表现。

weixin_29009971的博客 240

vue router导航守卫与不同的历史模式

vue router导航守卫与不同的历史模式。

Linlietao0587的博客 215

Vue项目路由路径中去掉#

在Vue中,有两种常见的路由模式:哈希模式(Hash Mode)和历史模式(History Mode)。要在Vue项目中选择路由模式,在创建Vue Router实例时,可以通过。

m0_67587248的博客 2566

Vue3 vue-router 编程式导航、命名路由、重定向、历史模式、路由守卫和路由元信息

pathparamsquerynamepath当指定 params 时,可提供 string 或 number 参数(或者对于可重复的参数可提供一个数组)。任何其他类型(如对象、布尔等)都将被自动字符串化。对于可选参数,你可以提供一个空字符串("")或 null 来移除它。由于属性 to 与 router.push 接受的对象种类相同,所以两者的规则完全相同。此外,router.push 和所有其他导航方法都会返回一个 Promise,让我们可以等到导航完成后才知道是成功还是失败。to。

g841805的博客 1957

Vue-router之页面跳转

官方文档见:Vue Router 是Vue.js官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。嵌套路由映射动态路由选择模块化、基于组件的路由配置路由参数、查询、通配符展示由 Vue.js 的过渡系统提供的过渡效果细致的导航控制自动激活 CSS 类的链接HTML5 history 模式或 hash 模式可定制的滚动行为URL 的正确编码。

integermain的博客 2079

前端面经-VUE3篇(三)--vue Router(一)基本使用、route和router、动态路由、路由匹配算法、嵌套路由、命名路由、命名视图、重定向与别名、路由组件传参、路由的历史模式

route是“你现在在哪”,router是“你怎么去别的地方”。名称说明$route表示当前“路由信息对象”,包含当前路径、参数、查询等$router表示“路由控制器实例”,用于跳转、返回、导航等行为两个都是 Vue Router 自动挂载到组件实例(即this)上的属性。只在使用选项式 API(非)时有效。很多时候,我们需要将给定匹配模式的路由映射到同一个组件。例如,我们可能有一个User组件,它应该对所有用户进行渲染,但用户 ID 不同。

qq_44643806的博客 1261

手摸手 撸一个 vue3.0 history 模式配合 nginx 多 location 配置

vue router 有 Hash, HTML5 不同的历史模式 官方文档: hash 模式是用 createWebHashHistory() 创建的 import { createRouter, createWebHashHistory } from 'vue-router' const router = createRouter({ history: createWebHashHistory(), routes: [ //... ], }) 它在内部传递的实际 URL 之前

ZhaoQM_script的博客 2267
上一篇: vuejs中路由的嵌套
下一篇: 第7节-如何登录Ecs服务器安装应用软件
itclanCoder
博客等级 码龄10年 1485粉丝 434原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值