vue项目两种路由模式原理和应用

ops/2024/12/23 22:11:24/

两种模式的区别

路由,让页面url改变,但整个html页面不重新加载,单页面应用,局部刷新页面。

1. hash原理
通过动态锚点技术重写url,如“http://127.0.0.1/#/XXX”,改变#后面的路径,实现切换url(路由)的目的。通过onhashchange监听url变化,来实现对页面的dom的隐藏和显示,看起来像整体页面在切换。

2. history原理
采用history对象中的pushState()函数重写url路径,路径不会带#
注:history.pushState() 方法向浏览器的会话历史栈增加了一个条目。(引用:https://developer.mozilla.org/zh-CN/docs/Web/API/History/pushState)

3. 区别和可能存在问题
有没有带#;原理本质不同;
hash模式的项目可能会在第三方app分享时,被标记为不合法地址;
hash 不利于 SEO(搜索引擎优化);
浏览器需要等待 JavaScript 文件加载完成之后渲染 HTML 文档内容,用户等待时间稍长,可能出现白屏问题。
history模式项目,部署到服务端后,可能出现404的问题,需要后端通过重定向解决。(可能在脚手架环境内解决了这个问题,脱离脚手架环境,仍会出现);无法兼容ie8 。

4. 在vue项目中,切换路由模式

vue2:

javascript">const Router = new VueRouter({
mode:'history',//or hash
routes:[...]
})
Router.afterEach((to, from) => {// console.log(to);
})

vue3:

javascript">import { createRouter, RouteRecordRaw, createWebHistory, createWebHashHistory } from "vue-router";
const routes: RouteRecordRaw[] = [...];
const router = createRouter({// history: createWebHistory(process.env.BASE_URL),history: createWebHashHistory(),routes,
});

http://www.ppmy.cn/ops/144399.html

相关文章

Android Audio实战——音频流数据dump(十)

在《Android Audio基础——音频链路分析》中已经对音频链路进行了分析,并且也分析了 dump pcm 数据的相关节点,这里我们来看一下 dump pcm 数据的详细代码。 一、上/下音频数据 1、Android.bp 源码位置:/frameworks/av/media/libaudioclient/Android.bp cc_library_shar…

[计算机网络]唐僧的”通关文牒“NAT地址转换

1.NAT:唐僧的通关文牒 在古老的西游记中,唐僧师徒四人历经九九八十一难,终于取得了真经。然而,他们并不是一开始就获得了通关文牒,而是经过了重重考验,最终得到了国王的认可,才顺利通过了各个关…

使用 Elasticsearch 查询和数据同步的实现方法

在开发过程中,将数据从数据库同步到 Elasticsearch (ES) 是常见的需求之一。本文将重点介绍如何通过 Python 脚本将数据库中的数据插入或更新到 Elasticsearch,并基于多字段的唯一性来判断是否执行插入或更新操作。此外,我们还将深入探讨如何…

Firefox 基本设置备忘

Firefox 基本设置备忘 记录一些常用的 Firefox 设置,可以帮助增强浏览体验: 标签页设置: browser.search.openintab: true 在搜索栏中搜索时,在新标签页中打开结果。browser.tabs.loadBookmarksInTabs: true 点击书签时,在新标…

力扣-图论-15【算法学习day.65】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

利用C#程序,实现音乐文件的播放功能(文末附GitHub源代码地址)

目录 一、功能要求 读取MP3文件要求 读取ogg文件要求 二、前期准备步骤 三、代码实现步骤 1、实现“添加音乐” 2、实现“停止音乐” 3、实现”上一曲“ 4、实现“下一曲” 5、实现“播放ogg" 6、listbox1中代码 7、填写showmusic函数 四、全部代码 五、测试…

手机便签哪个好用?手机桌面便签app下载推荐

在快节奏的现代生活中,我们常常需要记录一些重要的信息和灵感,以便于日后查阅和回顾。手机便签软件因其便携性和易用性,成为了我们日常生活中不可或缺的工具。无论是购物清单、待办事项、灵感记录还是重要笔记,手机便签都能帮助我…

Mybatis中使用MySql触发器报错:You have an error in your SQL syntax; ‘DELIMITER $$

前提: 在写数据库作业时候,使用SpringBoot2.7.xMybatis-plusMysql8.0开发,其中使用MySQL的触发器时报以下错误: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for t…