SPA单页应用开发笔记

一、哈希模式

特点

  • URL 格式:通过 # 符号标识路由,例如 https://example.com/#/home
  • 实现原理:利用 window.location.hash 监听哈希变化,哈希后的内容不会发送到服务器
  • 兼容性:兼容所有浏览器(包括 IE9)

优点

  1. 无需服务器配置:直接部署即可使用,适合静态托管(如 GitHub Pages)
  2. 天然防刷新 404:服务器始终返回 index.html,路由由前端解析

缺点

  1. URL 不美观# 符号影响视觉体验
  2. SEO 不友好:部分爬虫可能忽略 # 后的内容(需配合 SSR 优化)

配置示例(Vue Router)

const router = new VueRouter({
  mode: "hash", // 默认模式,可不写
  routes: [...]
})

二、历史模式

特点

  • URL 格式:无 #,例如 https://example.com/home
  • 实现原理:基于 HTML5 History API(pushState/replaceState
  • 兼容性:需要 IE10+ 或现代浏览器

优点

  1. URL 简洁美观:符合传统 URL 习惯
  2. SEO 更友好:完整路径可被爬虫抓取(仍需配合 SSR)

缺点

  1. 需服务器支持:刷新或直接访问子路由时可能返回 404,需配置服务器重定向
  2. 部署复杂度高:需确保所有路径回退到 index.html

配置示例(Vue Router)

const router = new VueRouter({
  mode: "history", // 显式启用历史模式
  routes: [...]
})

三、关键对比表

特性 哈希模式 历史模式
URL 格式 #(如 /#/home #(如 /home
服务器配置 无需特殊处理 需配置重定向到 index.html
浏览器兼容性 兼容所有浏览器 IE10+ 或现代浏览器
SEO 支持 需额外处理 需配合 SSR
部署场景 静态托管、无法改服务器时使用 自有服务器或支持 SPA 的托管

四、服务器配置

Nginx 配置

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

五、如何选择?

  • 优先历史模式:若项目需要美观 URL、支持 SEO,且能控制服务器配置(如部署到自有服务器)
  • 降级哈希模式:若使用静态托管(GitHub Pages、Netlify)、无法修改服务器配置,或需兼容老旧浏览器

欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1701220998@qq.com
导航页 GitHub