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

vue的路由的两种模式 hash与history 详细讲解

在这里插入图片描述

文章目录

    • 1. Hash 模式
      • 工作原理
      • 优点
      • 缺点
      • 使用示例
    • 2. History 模式
      • 工作原理
      • 优点
      • 缺点
      • 服务器配置示例
      • 使用示例
    • 总结


Vue Router 是 Vue.js 的官方路由管理器,它支持多种路由模式,其中最常用的两种是 hash 模式和 history 模式。下面我们详细讲解这两种模式的特点及使用场景。

1. Hash 模式

工作原理

Hash 模式是基于 URL 的 hash(锚点)部分实现的,所有的路由都以 # 开头,浏览器不会向服务器发送 hash 后面的内容。URL 的变化只会影响 hash 部分,适合用于不需要服务器支持的简单应用。

示例 URL:

http://example.com/#/home

优点

  • 兼容性好:Hash 模式在所有浏览器中都得到了广泛支持,包括 IE9 及更早的版本。
  • 无需服务器配置:由于 hash 不会被发送到服务器,应用可以直接运行在任何静态服务器上。

缺点

  • SEO 不友好:搜索引擎一般无法抓取 hash 后面的内容,可能会影响 SEO。
  • 用户体验差:浏览器的后退和前进按钮不够直观,用户体验上略逊于 history 模式。

使用示例

import Vue from 'vue';
import Router from 'vue-router';
import Home from './components/Home.vue';

Vue.use(Router);

const router = new Router({
  mode: 'hash',
  routes: [
    { path: '/', component: Home },
    { path: '/about', component: () => import('./components/About.vue') },
  ]
});

export default router;

2. History 模式

工作原理

History 模式是利用 HTML5 的 History API 来实现的,允许你在不重新加载页面的情况下改变 URL。URL 中不会有 hash,路由看起来更干净。

示例 URL:

http://example.com/home

优点

  • SEO 友好:由于 URL 中不包含 hash,搜索引擎能够更好地抓取页面内容。
  • 更好的用户体验:URL 更美观,符合用户的直觉,后退和前进按钮的行为也更自然。

缺点

  • 需要服务器支持:需要进行服务器配置,确保刷新页面时,服务器返回的是应用的入口 HTML 文件,而不是 404 错误。

服务器配置示例

对于常见的静态服务器,如 Nginx,你可以使用以下配置:

location / {
  try_files $uri $uri/ /index.html;
}

使用示例

import Vue from 'vue';
import Router from 'vue-router';
import Home from './components/Home.vue';

Vue.use(Router);

const router = new Router({
  mode: 'history',
  routes: [
    { path: '/', component: Home },
    { path: '/about', component: () => import('./components/About.vue') },
  ]
});

export default router;

总结

  • Hash 模式:适合不需要服务器支持的简单应用,兼容性好,但 SEO 和用户体验稍差。
  • History 模式:提供更好的 SEO 和用户体验,但需要服务器的支持。

选择哪种模式取决于你的项目需求、目标用户以及服务器环境。如果你需要考虑 SEO,建议使用 history 模式;如果希望快速部署,或者兼容老旧浏览器,可以选择 hash 模式。

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。


http://www.kler.cn/a/379025.html

相关文章:

  • EHOME视频平台EasyCVR萤石设备视频接入平台视频诊断技术可以识别哪些视频质量问题?
  • el-upload,上传文件,后端提示信息,前端需要再次重新上传(不用重新选择文件)
  • 基于人脸识别PCA算法matlab实现及详细步骤讲解
  • 智慧汇聚:十款企业培训工具打造学习型企业
  • 客如云:大型业务报表的分区化改造提升性能|OceanBase 应用实践
  • 小张求职记四
  • python+pptx:(一)占位符、文本框、段落操作
  • 【python】OpenCV—findContours(4.5)
  • 【原创分享】JVM服务调优实战
  • Vue+element-ui实现网页右侧快捷导航栏 Vue实现全局右侧快捷菜单功能组件
  • selenium自动搭建
  • 数字化装配助力柔性制造与快速换型,驱动效率飞跃
  • chrome编辑替换js文件的图文教程
  • STL--哈希
  • BeanDefinition体系架构(待...)
  • 大数据挖掘和数据挖掘有什么不一样?
  • (C#面向初学者的 .NET 的生成 AI) 第 2 部分-什么是 AI 和 ML?
  • Nginx 实现动态封禁IP,详细教程来了
  • Linux特种文件系统--tmpfs文件系统
  • yarn : 无法加载文件,未对文件 进行数字签名。无法在当前系统上运行该脚本。
  • [Android]从FLAG_SECURE禁止截屏看surface
  • 雷电模拟器ls内部操作adb官方方法
  • VScode + PlatformIO 了解
  • WMV怎么转MP4?五个简单好用的视频格式转换方法!
  • Faces in Things数据集: 由麻省理工学院、微软等联合发布,探索人类视觉错觉的新里程碑
  • 每日OJ题_牛客_最长上升子序列(二)_贪心+二分_C++_Java