【面试题】前端路由分类

news2025/1/9 1:15:48

0. 前言

在Web开发中,路由是指根据用户请求的URL地址,确定用户访问的页面资源、参数等,是前端开发中不可缺少的重要部分。Vue router中提供了两种路由模式,一种是hash模式,另一种是history模式。

1. Hash模式路由

Hash模式是默认的路由模式。在URL中加入"#",比如http://www.baidu.com/#/abc,#后面的内容就是路由地址。Hash模式有一个优点,就是兼容性比较好,因为它不需要后端支持,只要在前端将URL中的#后面的内容进行解析,就能获取到路由信息。当URL的hash部分发生变化时,会触发window.onhashchange事件,它可以用来监听浏览器的返回和前进按钮、手动修改URL的hash部分等操作。

在Web浏览器中,location对象表示当前文档的URL信息。一个典型的hash模式URL地址如下图所示,它由多个部分组成。

在这里插入图片描述

location对象的hash属性有以下特点:

  • 改变location.hash属性的值不会触发浏览器的页面重新渲染,这是SPA必需的特点。
  • hash值变化会触发页面跳转,即浏览器的前进、后退。
  • hash模式的路由不会提交到服务端。

2. History模式路由

在History模式下,URL不会像hash模式那样带有#号,而是一个正常的URL,例如:http://www.baidu.com/path/to/page。History模式是通过利用 HTML5 History API 实现的,可以在不刷新整个页面的情况下,动态改变当前URL地址和页面内容。可以通过window.onpopstate来监听路由的变化。

使用History模式需要后端的支持,因为它需要在服务器端进行配置。如果用户直接访问了一个History模式下的URL,而此时后端又没有相应的配置,就会出现404错误。Vue router提供了一个特殊的fallback选项,用于定义在服务器返回404错误页面时,应该返回什么样的页面。常见的做法是将fallback设为单页面应用的主页,以保证用户可以正确访问到页面。

HTML5 History API有如下的属性和方法:

方法/属性解释
history.pushState()向历史记录添加一个状态,并改变当前URL
history.replaceState()用新的状态替换当前状态,不会添加一个新的历史记录条目
history.go()加载历史记录中的某个特定页面
history.back()加载历史记录中的前一个页面,相当于点击浏览器的后退按钮
history.forward()加载历史记录中的下一个页面,相当于点击浏览器的前进按钮
history.length返回历史记录中的条目数

3. 如何选择路由模式

  • to B 的系统推荐用hash,简单易用,对url规范不敏感。
  • to C 的系统,可以考虑选择 H5 history,需要服务端支持。
  • 需要考虑成本和收益,尽量选择简单的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爆款升级!新系列南卡Neo最强旗舰杀到,业内首款无线充骨传导耳机!

中国专业骨传导耳机品牌NANK南卡于近日发布了全新南卡Neo骨传导运动耳机,打造一款佩戴最舒适、音质体验最好的骨传导耳机。推出第2代声学響科技技术,提供更优质的开放式骨传导听音体验,透过不一样的音质体验,打造更好的骨传导耳机…

MySQL基础(二)排序与分页、多表查询、单行函数

上接 MySQL基础(一)SQL分类、导入、SELECT语句,运算符_独憩的博客-CSDN博客 目录 排序与分页 排序 二级排序 分页 多表查询 基础多表查询 等值连接vs非等值连接 自连接vs非自连接 内连接vs外连接 自然连接 单行函数 数值函数 …

信息系统基本知识(四)新技术

大纲 信息系统与信息化信息系统开发方法常规信息系统集成技术软件工程新一代信息技术信息系统安全技术信息化发展与应用信息系统服务管理信息系统服务规划企业首席信息管及其责任 1.5 新一代技术 1.5.1 物联网 概念:(The Internet of Things&#xf…

你只会说MVC模型是什么但是不会实现?今天带你走通Web、Servlet、MVC、SpringMVC。代码演示很清晰

文章目录HTTP请求和HTTP响应从0手写一个Web服务器,看看能有多累人使用Servlet实现一个服务器,看看多简单Serlvet的创建Servlet的运行Servlet的其他问题Servlet这么爽,我们简单地探索一下它的原理JSP跟Servlet合作啦,我们来看一下他…

学习ROS时针对gazebo相关的问题(重装与卸载是永远的神)

ResourceNotFound:gazebo_ros 错误解决 参考:https://blog.csdn.net/weixin_42591529/article/details/123869969 当将机器人加载到gazebo时,运行launch文件出现如下错误 这是由于缺少gazebo包所导致的。 解决办法:

Linux 学习 挂载、卸载光盘和实现虚拟机时间同步

/media:挂载光盘使用的 挂载光盘命令:mount /dev/cdrom /media 卸载光盘命令:umount /dev/cdrom 挂载光盘 使用挂在光盘命令挂载光盘,如图所示 卸载光盘 初次卸载光盘可能会出现问题 [rootlocalhost media]# umount /dev/cd…

linux定时任务打包提权docker组提权

定时任务有打包命令,这个命令有参数调用可以执行其他命令,定时任务因为是root用户执行的,所以就会造成提权。一、linux定时任务打包提权复现环境:ubuntun14.041.创建定时任务:在最下面写入:* * * * * …

CK-GW208-EIP与汇川5UPLC走EtherNET_IP通讯指南

CK-GW208-EIP是一款支持标准工业Ethernet/IP协议的IO-LINK主站网关,方便用户快速便捷的集成到PLC等控制系统中。CK-GW208-EIP主站网关集成8路IO-LINK通信端口,采用即插即用模式,无需繁琐的配置,减轻现场安装调试的工作量。为了满足…

几何算法——6.曲线曲面求交的方法总结(国内外文献调研、思考和总结)

几何算法——6.曲线曲面求交的方法总结(国内外文献调研、思考和总结)1 曲线曲线1.1 直线/二次曲线1.2 二次曲线/二次曲线1.3 其他类型2 曲线曲面2.1 直线/二次曲面,二次曲线/平面2.2 二次曲线/二次曲面2.3 其他类型3 曲面曲面3.1 平面/二次曲…

文件传输协议的五种安全文件传输替代方案

对安全文件传输协议的需求,过去,文件传输协议(FTP)是发送文件的常用协议。这是一个更简单的时期,安全性比今天要少得多。 但是随着黑客变得越来越复杂,他们发现FTP缺乏安全性。他们知道FTP可以通过有限的方式来确保访…

【IoT】压力式电子脉搏器设计

脉搏是指单位时间内心脏跳动的次数,一般指每分钟的心跳次数,它是衡量人体健康指数的重要指标之一。然而,传统的诊脉手段受到人为因素影响较多,在一定程度上降低了判断病情的准确性,随着电子科学技术的迅猛发展,就出现了电子脉搏计…

# 技术详解: 利用CI同步文章以及多端发布

技术详解: 利用CI同步文章以及多端发布 技术详解: 利用CI同步文章以及多端发布 前言文章的同步实现的细节 思路文章元数据的定义和提取修改文章的优化本地图片资源上传CDN并替换本地link 终于到了 CI 的部分了最后来一些碎碎念 前言 前几天我更新了一篇简单技术总结之后&am…

用C语言写一个自己的shell-Part Ⅲ--built-in commands

Part Ⅲ–Built-in commands Just as we have mentioned in part Ⅱ,the exec family of functions can’t perform built-in commands like cd. It’s like The reason for this is that cd is not a system command like ls or pwd.We need to write and inv…

云原生下最火的API网关-APISIX

文章目录一、APISIX是什么?二、APISIX有哪些功能?三、APISIX对比Spring Cloud Gateway、Zuul等其他网关有哪些优势?四、从0到1部署APIXSIX步骤1:准备环境步骤2:安装依赖步骤3:安装APISIX步骤4:配…

成都待慕电商:抖音虚假宣传虚构被比较价格违规细则

为了保护抖音消费者权益,规范创作者商品分享推广秩序,抖音平台制定《「虚假宣传-虚构被比较价格」违规细则》。 来看详细内容:一、什么是“被比较价格”?被比较价格:指创作者通过价格比较的方式宣传商品价格优惠时&…

opencv:运用cv2给视频加水印

前一段时间学了一下计算机视觉的相关知识,今天想了想,觉得可以利用cv2这个模块给视频加上水印,这样从一些方面也可以表明这个视频的原创。 1. 实现原理 小编的实现原理就是使用cv2模块读取视频文件,然后获取到每一张图片,在图片上的相应位置写上相应的字符串(小编最初打算…

MR虚拟直播是什么?

阿酷tony / 2023-3-3 / 长沙MR虚拟直播是通过机器人、虚拟人物、虚拟舞台或虚拟现实技术,将主播和场景实时转化的互动直播方式。MR技术(混合现实技术)结合大数据、人工智能等技术,可以在虚拟直播中实现更多的自由度和互动性&#…

认识BUG

如何描述 bug一个合格的 bug 描述应该包括以下几个部分:发现问题的版本开发人员需要知道出现问题的版本,才能够获取对应版本的代码来重现故障,并且版本的标识也有利于统计和分析每个版本的质量。问题出现的环境环境分为硬件环境和软件环境&am…

GUI 之 Tkinter编程

GUI 图形界面,Tkinter 是 Python 内置的 GUI 库,IDLE 就是 Tkinter 设计的。 1. Tkinter 之初体验 import tkinter as tkroot tk.Tk() # 创建一个窗口root.title(窗口标题)# 添加 label 组件 theLabel tk.Label(root, text文本内容) theLabel.p…

学习使用Android开发者者文档

Android Lint 错误信息中可看到不兼容代码所属的API级别。也可以在ANdroid开发者文档中查看各API级别特有的类和函数。 越早熟悉使用开发者文档越有利于开发,当然我们不可能记住所有的Android SDK中海量信息,因此学会查阅SDK文档,不断学习新的…