vue-router实现单页面路由原理

【Vue学习总结】01—Vue中的路由以及默认路由跳转 1、在/src/router的index.js文件中配置路由 import Vue from 'vue' import Router from 'vue-router' import HelloWorld from '@/components/HelloWorld' import second from '@/components/second' // 1、引入vue-router Vue.use(Router) // 2、定义路由,此处定义了2个路由 const routes = [ {pat 阅读详情

本文参考总结于:
1、vue-router原理分析 - https://www.cnblogs.com/yanze/p/7644631.html
2、location.hash详解 - http://blog.youkuaiyun.com/baidu_31333625/article/details/54288223
3、使用HTML5的History API - https://www.cnblogs.com/chaoyuehedy/p/5758143.html
4、HTML5 History 模式 - https://router.vuejs.org/zh-cn/essentials/history-mode.html

      我们都知道,单页面应用(SPA)的核心之一是: 更新视图而不重新请求页面;vue-rouetr在实现单页面前端路由时,提供了两种方式:Hash模式和History模式;根据mode参数来决定采用哪一种方式。

       那为什么这两种方式能够实现试图更新不跳转,其原因在于:

1、Hash模式:
      hash(#)是URL 的锚点,代表的是网页中的一个位置,单单改变#后的部分,浏览器只会滚动到相应位置,不会重新加载网页,也就是说 #是用来指导浏览器动作的,对服务器端完全无用,HTTP请求中也不会不包括#;同时每一次改变#后的部分,都会在浏览器的访问历史中增加一个记录,使用”后退”按钮,就可以回到上一个位置;

2、History模式:
    HTML5 History API提供了一种功能,能让开发人员在不刷新整个页面的情况下修改站点的URL,就是利用 history.pushState API 来完成 URL 跳转而无须重新加载页面;

通常情况下,我们会选择使用History模式,原因就是Hash模式下URL带着‘#’会显得不美观;但实际上,这样选择一不小心也会出问题;比如:

但当用户直接在用户栏输入地址并带有参数时:
Hash模式:xxx.com/#/id=5 请求地址为 xxx.com,没有问题;
History模式: xxx.com/id=5 请求地址为 xxx.com/id=5,如果后端没有对应的路由处理,就会返回404错误;

为解决这一问题,vue-router提供的方法是:

在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。
给个警告,因为这么做以后,你的服务器就不再返回 404 错误页面,因为对于所有路径都会返回 index.html 文件。为了避免这种情况,你应该在 Vue 应用里面覆盖所有的路由情况,然后在给出一个 404 页面。或者,如果你使用 Node.js 服务器,你可以用服务端路由匹配到来的 URL,并在没有匹配到路由的时候返回 404,以实现回退。

前端路由原理深度解析:Vue Router 与 React Router 前端路由实现原理对比 Vue Router和React Router是两大主流前端路由解决方案,它们的核心原理相似但实现方式不同。 核心原理: Hash模式:利用URL的hash部分变化,通过hashchange事件监听 History模式:使用HTML5 History API实现,需服务器支持 实现差异: Vue Router采用集中式配置,通过响应式系统自动更新视图,使用<router-view>组件渲染匹配内容 React Router采用组件式声明,通过Context传递路由信息,最新 阅读详情

相关推荐

<前端路由原理>react-router-dom入门级教程

1. 什么是路由?2. 路由分类前端路由依靠的是浏览器的BOM对象中的history,也就是浏览器的历史记录(history)。但我们一般不直接操作BOM身上的history,而是借助history.js去操作BOM。history模式的路由: hash模式的路由:(地址栏中带有 # 号) 浏览器的历史记录(history)是一个栈的结构。浏览器的历史记录(history)是一个栈的结构。浏览器的历史记录(history)是一个栈的结构。重要是事情说三遍。每当执行push操作时,都是将path推入栈顶,浏览

Coding and studying 4385

使用react-router实现单页面应用路由

这是Webpack+React系列配置过程记录的第二篇。其他内容请参考: 第一篇:使用webpack、babel、react、antdesign配置单页面应用开发环境 第二篇:使用react-router实现单页面应用路由 第三篇:优化单页面开发环境:webpack与react的运行时打包与热更新 第四篇:React配合Webpack实现代码分割与异步加载 上一篇文章讲述了如何搭...

weixin_30336061的博客 291

【多元统计分析】均值向量和协方差阵的检验——spss上机实验

均值向量和协方差阵的检验——spss上机实验 #参考书目为《多元统计分析》(第五版)——何晓群.中国人民大学出版社 #如有错误,请指正!谢谢~ #关注公众号搜索同名文章获取数据~ 习题2.3 现选取内蒙古、广西、贵州、云南、西藏、宁夏、新疆、甘肃和青海等9个内陆边远省区。选取人均GDP、第三产业比重、人均消费支出、人口自然增长率及文盲半文盲人口占15岁以上人口的比例等5项能较好的说明各地区社会经济发展水平的指标,验证边远及少数民族聚居区的社会经济发展水平与全国平均水平间有无显著差异。 将输入导入spss

suansuannainaizi的博客 3万+

超详细的vue-router原理

vueRouter是前端路由,在无需刷新页面的情况下更新视图。 两种模式:一种是Hash模式,一种是History模式。分别就是在HTML5History,HashHistory两个类中实现的。 一、vue-router组成 vue-router组件有三个部分 1.link:即v-link 2.view:元素指令,即 3.router:核心部分 二、vue-router简单的一个流程 1.url 变化 2.history监听(onChange事件):window.addEventListener(‘hash

jiangjialuan2的博客 8923

VINS-Fusion实战:从零搭建无人机视觉SLAM系统(附ROS配置全流程)

本文详细介绍了如何从零开始为无人机搭建基于VINS-Fusion的视觉SLAM系统。内容涵盖硬件选型(重点推荐双目相机与IMU搭配)、ROS环境配置、传感器标定、核心参数调优以及实际飞行测试与问题排解全流程,旨在帮助开发者实现稳定、精确的无人机自主定位与导航。

wasm7browser的博客 213

ChatGPT高效制作PPT:从内容生成到设计优化全流程

人工智能技术正在改变传统办公文档的创作方式,其中自然语言处理(NLP)与生成式AI的结合为内容创作带来了革命性突破。以ChatGPT为代表的大语言模型(LLM)能够理解复杂指令并生成结构化内容,其核心原理是通过海量数据训练获得的语义理解和文本生成能力。在办公自动化场景中,这种技术特别适合解决PPT制作中的两大痛点:内容创作耗时和逻辑架构困难。通过精心设计的提示词工程,AI可以快速输出包含核心要点、数据支撑的完整内容框架,甚至直接生成Markdown格式的代码以便快速转换为PPT。对于商业计划、项目汇报等高频

weixin_42613018的博客 492

vue-Router实现原理

一、前端路由概念 通过改变 URL,在不重新请求页面的情况下,更新页面视图。 二、vue-Router两种模式 更新视图但不重新请求页面,是前端路由原理的核心之一,目前在浏览器环境中这一功能的实现主要有2种方式: Hash — 默认值,利用 URL 中的hash("#") 、 history-- 利用URL中的路径(/home) 如何设置路由模式 const router=new VueRouter({ mode:'history', routes:[...] }) m

田兴的博客 6377

THB6128步进电机驱动芯片介绍

THB6128芯片也称为步进电机驱动芯片,采用BiCDMOS工艺,IC管脚间距为1mm的小型MFP30KR封装而成。

weichen_78的博客 7182

什么是vue-router,工作原理是什么

一、vue-router是什么 路由就是SPA的路径管理器。vue-router是Vuejs官方的路由插件,它和vuejs是深度集成的,适用于构建单页面应用。vue的SPA是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。 传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。路由模块的本质 就是建立起url和页面之间的映射关系。 二、vue-router实现原理 2.1 Hash模式 vue-router默认h

Hy_0452的博客 6582

告别Vivado自带编辑器!手把手教你用Sublime Text 4 + Icarus Verilog搭建FPGA开发环境(Windows 10/11)

本文详细介绍如何在Windows 10/11系统下,使用Sublime Text 4和Icarus Verilog搭建高效的FPGA开发环境,替代Vivado自带编辑器。通过配置语法检查、代码高亮和智能补全等功能,提升Verilog开发效率,实现专业级工作流。

weixin_30684743的博客 427

Proteus-51单片机-LCD1602显示DS1302时钟

本文详细介绍了如何使用Proteus仿真51单片机配合LCD1602显示DS1302时钟的步骤,包括DS1302时钟芯片的主要特性、引脚定义、外围电路以及LCD1602的原理和技术参数。此外,还讲解了LCD1602的指令集和显示字符的方法,并给出了初始化及显示操作的步骤。

让你爱上电路设计 6978

超硬核,vue-router路由详解,web前端开发专业课程

好了,这就是整理的前端从入门到放弃的学习笔记,还有很多没有整理到,我也算是边学边去整理,后续还会慢慢完善,这些相信够你学一阵子了。做程序员,做前端工程师,真的是一个学习就会有回报的职业,不看出身高低,不看学历强弱,只要你的技术达到应有的水准,就能够得到对应的回报。学习从来没有一蹴而就,都是持之以恒的,正所谓活到老学到老,真正懂得学习的人,才不会被这个时代的洪流所淘汰。一个人可以走的很快,但一群人才能走的更远。如果你从事以下工作或对以下感兴趣,欢迎戳这里加入程序员的圈子,让我们一起学习成长!

2301_77118221的博客 992

华为OD机试 - 末世分配资源包 - 二分查找 + 贪心(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。末世时代,政府为各地方配资源,现有资源分配表 nums[n],要求按如下规则分配给 k 个营地:在最优平均分配情况下,得到最大团队所获得的资源数4,3,6,9,7 216最佳划分之一:[4,3,6] -> 13 [9,7] -> 16最大

学Java,找哪吒 223

前端路由原理剖析:单页面应用(SPA)的导航机制​​​​

HTML5 引入了 History API,它提供了一组用于操作浏览器历史记录的方法,包括pushState()、replaceState()和popstate事件。通过这些方法和事件,开发者可以实现更加灵活和符合预期的前端路由。pushState(state, title, url):向浏览器历史记录中添加一条新记录,其中state是一个包含页面状态信息的对象,title目前大多数浏览器都忽略该参数,url是新的 URL 地址。

数字魔方操控师的博客 921

想重装OpenClaw?先执行这4步彻底卸载,避免配置冲突

在重装OpenClaw之前,彻底卸载是非常重要的一步。如果不彻底卸载,可能会导致: - 残留的配置文件与新安装的版本冲突 - 旧的依赖包干扰新的安装过程 - 服务冲突导致启动失败 - 数据混乱影响系统稳定性

一键难忘的博客 1043

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

单页小程序不需要服务器,10分钟彻底搞懂微信小程序单页面应用路由

单页面应用特征「假设:」 在一个 web 页面中,有1个按钮,点击可跳转到站内其他页面。「多页面应用:」 点击按钮,会从新加载一个html资源,刷新整个页面;「单页面应用:」 点击按钮,没有新的html请求,只发生局部刷新,能营造出一种接近原生的体验,如丝般顺滑。SPA 单页面应用为什么可以几乎无刷新呢?因为它的SP——single-page。在第一次进入应用时,即返回了唯一的html页面和它的公...

weixin_39999190的博客 956

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

vue-router

目标: 设备和ip的映射关系目标: 接口和服务的映射关系目标: 路径和组件的映射关系目标: 如何在Vue项目中集成路由官网: https://router.vuejs.org/zh/vue-router模块包它和 Vue.js 深度集成可以定义 - 视图表(映射规则)模块化的提供2个内置全局组件声明式导航自动激活的 CSS class 的链接……目标: vant是一个轻量、可靠的移动端 Vue 组件库, 开箱即用vant官网提供 60 多个高质量组件,覆盖移动端各类场景。

延成的博客 752

Devexpress16.2.6破解工具

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

Vue-Router 介绍及路由原理分析

单页面开发模式的路由全权交由前端来控制,这里的路由不是我们说的路由器等硬件设备,它是前端的路径管理器。而 Vue-Router 是官方提供的路由插件,市面上也不乏路由管理插件,但是只有 Vue-Router 能和 Vue 深度集成完美搭配

qq_53499304的博客 2万+

vue-router(vue 路由)基本使用指南(一)

Vue Router 是 Vue 官方的客户端路由解决方案,与 Vue.js 核心深度集成,用于构建单页面应用(SPA)。Vue Router 基于 Vue 的组件系统构建,可以通过配置路由来告诉 Vue Router 为每个 URL 路径显示哪些组件。嵌套路由映射动态路由选择模块化、基于组件的路由配置路由参数、查询、通配符展示由 Vue.js 的过渡系统提供的过渡效果细致的导航控制自动激活 CSS 类的链接HTML5 history 模式或 hash 模式。

墨鸦的博客 1万+

vue-router实现原理

路由router\index.js配置: import Vue from 'vue' import Router from 'vue-router' const Home = () => import('@/components/HelloWorld') const Badge = () => import('@/components/Badge') const Progress ...

duansamve的博客 2073

遇到面试vue-router原理

前端三大框架Vue,React,Angular,他们都是单页面应用开发的,所以利用路由的跳转非常有必要的,vue-router,react-router,angular-router都是基于前端路由原理进行封装实现的,所以我们使用起来非常方便,只会使用还不行,刚上手的小白,给他随便说两句就会使用路由,但是我们也需要了解路由的原理,知己知彼,才能百战百胜。 一、什么是路由 路由的概念起源于服务端,在...

weixin_44667072的博客 7515

弄懂vue-router的实现原理

官网文档,…, 下面这种路由表的写法比较优雅,我把路由单独写在一个文件routes.js . router/routes.js 文件代码 const routes = [ { path: '/', redirect: '/recommend' }, { path: '/recommend', component: () => import('../...

张木期的博客 2万+

入门 - Vue中vue-router实现原理详解

vue-router是Vue官方推出的路由管理器,它和vue.js是深度集成的,主要用于管理URL,实现URL和组件的对应,以及通过URL进行组件之间的切换,通过改变URL,在不重新请求页面的情况下,更新页面视图,从而使构建单页面应用变得更加简单。这2个方法有个共同的特点:当调用他们修改浏览器历史栈后,虽然当前url改变了,但浏览器不会立即发送请求该url,这就为单页应用前端路由,更新视图但不重新请求页面提供了基础。方法不同之处在于,它并不是将新路由添加到浏览器访问历史的栈顶,而是替换掉当前的路由。

qq_61863348的博客 1319

第七章 路由 Vue Router

在Vue中,路由是一个核心概念,它允许开发者在单页面应用程序(SPA)中创建多个视图(或页面),并在这些视图之间进行导航。Vue路由主要通过Vue Router来实现,Vue Router是Vue.js官方提供的路由插件,与Vue.js深度集成,非常适合用于构建单页面应用。Vue路由的基本概念路由:在Vue中,路由通常指应用程序中的一个页面或视图,它由一个Vue组件表示。通过定义路由,开发者可以指定当用户访问某个URL时,应该渲染哪个组件。路由器。

上官花雨滴博客!!! 1285

走进Vue【三】vue-router详解

vue-router详解

商务合作/软件定制/学习交流 1976
上一篇: CSS居中方式总结
下一篇: 一个贴近实际的原型链继承的列子
张三少
博客等级 码龄9年 12粉丝 31原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值