当前位置: 首页 > news >正文

【vue3|第20期】vue3中Vue Router路由器工作模式

日期:2024年8月6日
作者:Commas
签名:(ง •_•)ง 积跬步以致千里,积小流以成江海……
注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方,还望各位大佬不吝赐教,谢谢^ - ^
1.01365 = 37.7834;0.99365 = 0.0255
1.02365 = 1377.4083;0.98365 = 0.0006

说在最前面:本文 vue3 的示例代码,在没有另外声名的情况下,均采用 <script setup> 组合式代码风格,风格统一,避免混乱,请各位新老食客放心食用哈 ^ _ ^


文章目录

  • 一、前言
  • 二、3种路由器工作模式
    • 1. Hash 模式
    • 2. HTML5 History 模式
    • 3. Abstract 模式
  • 四、注意事项
  • 五、结语


在这里插入图片描述


一、前言


Web 页面的工作方式是通过 HTTP 请求从服务器获取HTML文档,然后由浏览器解析并显示内容。随着 Web 应用的发展,特别是单页应用SPA)的流行,需要在不重新加载整个页面的情况下,更新页面的部分内容Vue Router 支持多种工作模式,每种模式都有其特定的使用场景和配置方式。本文将详细介绍 Vue Router 的三种工作模式:Hash 模式HTML5 History 模式Abstract 模式

二、3种路由器工作模式


1. Hash 模式

例如,http://example.com/#/page1 中,#/page1 就是哈希值。

Hash 模式是一种常见的路由工作方式。在这种模式下,URL 中的哈希值被用于表示路由信息。当哈希值发生变化时,页面不会进行重新加载,而是由 Vue Router 来处理路由的切换。这种模式的一个优点是不需要服务器端配置额外的路由,因为 # 后面的内容不会发送到服务器。

语法:history: createWebHashHistory()

import { createRouter, createWebHashHistory } from 'vue-router';
import Home from './views/Home.vue';
import About from './views/About.vue';
const routes = [{ path: '/', component: Home },{ path: '/about', component: About }
];
const router = createRouter({history: createWebHashHistory(),routes,
});
export default router;

在上述代码中,createWebHashHistory() 创建了一个基于 Hash 的历史记录模式。用户访问 / 时会显示 Home 组件,访问 /about 时会显示 About 组件。

2. HTML5 History 模式

http://example.com/page1

HTML5 History 模式利用了 HTML5 History API,允许我们使用正常的 URL 路径,而不需要在 URL 中包含 # 符号。这种模式提供了更加美观的 URL,但需要服务器端进行相应的配置,以便在用户访问应用中的不同路径时返回相同的页面。

语法:history: createWebHistory()

import { createRouter, createWebHistory } from 'vue-router';
import Home from './views/Home.vue';
import About from './views/About.vue';
const routes = [{ path: '/', component: Home },{ path: '/about', component: About }
];
const router = createRouter({history: createWebHistory(),routes,
});
export default router;

使用 createWebHistory() 创建基于 HTML5 History API 的历史记录模式。与 Hash 模式类似,但提供了更为标准的 URL 形式。

3. Abstract 模式

Abstract 模式是一种用于非浏览器环境的路由模式,例如在 Node.js 服务器端渲染时使用。这种模式不依赖于浏览器的历史记录 API,因此可以在任何 JavaScript 环境中运行。

语法:history: createMemoryHistory()

import { createRouter, createMemoryHistory } from 'vue-router';
import Home from './views/Home.vue';
import About from './views/About.vue';
const routes = [{ path: '/', component: Home },{ path: '/about', component: About }
];
const router = createRouter({history: createMemoryHistory(),routes,
});
export default router;

通过 createMemoryHistory() 创建一个不依赖浏览器历史记录 API 的路由历史模式,适用于特定的环境,如服务器端渲染。

四、注意事项


  • 在使用 HTML5 History 模式时,务必确保服务器正确配置,否则用户直接访问一个子路由可能会遇到 404 错误。
  • Hash 模式虽然 URL 看起来不够优雅,但它无需服务器端配置,适用于快速原型开发和受限的服务器环境。
  • Abstract 模式通常用于服务器端渲染等特殊场景,不适用于常规的浏览器环境。

五、结语


Vue RouterVue3 中支持 Hash 模式、History 模式和 Abstract 模式。每种模式都有其适用场景和优缺点。在实际开发中,应根据项目需求和部署环境选择合适的模式。对于大多数现代 web 应用,推荐使用 History 模式以获得更好的用户体验和 SEO 优化效果。同时,需要注意服务器配置问题,以确保在 History 模式下刷新页面时不会出现 404 错误。


参考文章:

  • 《Vue Router》

版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/140953290

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 编程-设计模式 24:访问者模式
  • 散点图、折线图 -- 通过javascript实现
  • Spring -- 事务
  • Day23--前后端分离项目中如何使用 Vue.js 和 Axios 加载 WebServlet 生成的验证码图片
  • 三高服务是指什么
  • Docker中新建Python容器运行yolov9
  • Intellij Idea使用技巧
  • C# 闭包详解
  • Traceeshark:Wireshark 的开源插件
  • 结队编程(95%用例)D卷(JavaPythonC++Node.jsC语言)
  • lua匹配MAC地址 正则表达式
  • HarmonyOS第五章:组件抽取、构建函数抽取@Builder、构建函数插槽@BuilderParam
  • springboot+Loki+Loki4j+Grafana搭建轻量级日志系统
  • web自动化6-pytest⑦一些基本情况
  • 基于深度学习的物理仿真
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Github访问慢解决办法
  • js面向对象
  • maven工程打包jar以及java jar命令的classpath使用
  • PAT A1120
  • PermissionScope Swift4 兼容问题
  • PHP 的 SAPI 是个什么东西
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Spring-boot 启动时碰到的错误
  • vue学习系列(二)vue-cli
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 我感觉这是史上最牛的防sql注入方法类
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • $NOIp2018$劝退记
  • (BFS)hdoj2377-Bus Pass
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (pojstep1.3.1)1017(构造法模拟)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot青少年公共卫生教育平台 毕业设计 643214
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (三)mysql_MYSQL(三)
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (算法二)滑动窗口
  • (原)Matlab的svmtrain和svmclassify
  • (转)C语言家族扩展收藏 (转)C语言家族扩展
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • 、写入Shellcode到注册表上线
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .Net Core 中间件验签
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .NET和.COM和.CN域名区别
  • .NET连接数据库方式
  • .NET与 java通用的3DES加密解密方法
  • ??javascript里的变量问题