vue-router 中常用的 hash 和 history 路由模式实现原理

简介: vue-router 中常用的 hash 和 history 路由模式实现原理

Vue-Router 中常用的 hash 和 history 路由模式实现原理如下:


  1. Hash 模式:在这种模式下,URL 中带有一个 # 符号,后面跟随的是路径部分。例如:


http://example.com/#/home。在 Vue-Router 中,Hash 模式是默认模式。


实现原理:当页面的 URL 发生变化时,浏览器会发送一个带有 # 的请求到服务器。浏览器不会重载页面,而是通过监听 hashchange 事件来改变页面内容。Vue-Router 利用了这一特性,在初始化时会监听浏览器的 hashchange 事件,并根据 URL 中的 hash 值来匹配对应的路由,然后渲染相应的组件。


  1. History 模式:在这种模式下,URL 中没有 # 符号,路径部分更加清晰。例如:


http://example.com/home


实现原理:History 模式利用了 HTML5 中的 History API,包括 pushState()replaceState()popstate 事件。当用户点击链接或执行 JavaScript 代码改变页面 URL 时,Vue-Router 会调用浏览器的 pushState()replaceState() 方法来修改 URL,并通过监听 popstate 事件来响应 URL 的变化。这样就可以实现在 URL 改变时,无需刷新页面就能渲染相应的组件。


需要注意的是,在使用 History 模式时,需要确保服务器端配置正确,因为直接访问 URL 时,服务器需要返回对应的 HTML 文件,否则会导致 404 错误。

相关文章
|
11月前
|
JavaScript 前端开发 算法
vue渲染页面的原理
vue渲染页面的原理
320 56
|
11月前
|
JavaScript 前端开发 UED
vue2和vue3的响应式原理有何不同?
大家好,我是V哥。本文详细对比了Vue 2与Vue 3的响应式原理:Vue 2基于`Object.defineProperty()`,适合小型项目但存在性能瓶颈;Vue 3采用`Proxy`,大幅优化初始化、更新性能及内存占用,更高效稳定。此外,我建议前端开发者关注鸿蒙趋势,2025年将是国产化替代关键期,推荐《鸿蒙 HarmonyOS 开发之路》卷1助你入行。老项目用Vue 2?不妨升级到Vue 3,提升用户体验!关注V哥爱编程,全栈开发轻松上手。
780 2
|
移动开发 JavaScript API
Vue Router 核心原理
Vue Router 是 Vue.js 的官方路由管理器,用于实现单页面应用(SPA)的路由功能。其核心原理包括路由配置、监听浏览器事件和组件渲染等。通过定义路径与组件的映射关系,Vue Router 将用户访问的路径与对应的组件关联,支持哈希和历史模式监听 URL 变化,确保页面导航时正确渲染组件。
|
JavaScript 前端开发 API
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
Vue.js响应式原理深度解析:从Vue 2到Vue 3的演进
419 17
|
JavaScript
Vue 双向数据绑定原理
Vue的双向数据绑定通过其核心的响应式系统实现,主要由Observer、Compiler和Watcher三个部分组成。Observer负责观察数据对象的所有属性,将其转换为getter和setter;Compiler解析模板指令,初始化视图并订阅数据变化;Watcher作为连接Observer和Compiler的桥梁,当数据变化时触发相应的更新操作。这种机制确保了数据模型与视图之间的自动同步。
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
缓存 JavaScript 搜索推荐
Vue SSR(服务端渲染)预渲染的工作原理
【10月更文挑战第23天】Vue SSR 预渲染通过一系列复杂的步骤和机制,实现了在服务器端生成静态 HTML 页面的目标。它为提升 Vue 应用的性能、SEO 效果以及用户体验提供了有力的支持。随着技术的不断发展,Vue SSR 预渲染技术也将不断完善和创新,以适应不断变化的互联网环境和用户需求。
365 9
|
资源调度 JavaScript 前端开发
路由管理:Vue Router的使用和配置技巧
【10月更文挑战第21天】路由管理:Vue Router的使用和配置技巧
316 3
|
JavaScript API
vue 批量自动引入并注册组件或路由等等
【10月更文挑战第12天】 vue 批量自动引入并注册组件或路由等等