关于vue-router里history模式选择的问题

来源:4-4 添加配置 Vue Router

zhaobao1830

2021-02-22 09:26:02

问题描述:

为什么使用HTML5模式,而不是用hash模式?hash模式有什么缺点?(除了路径里有#丑以外)实际项目中这俩种模式的使用场景是什么?


写回答

1回答

张轩

2021-02-22

同学你好 


两者能够达到的目的是一样的,我本人更倾向于 HTML5 模式也就是 history 模式。一些优缺点的总结:


History 模式:

    ​优点

  • 使用简单,比较美观

  • pushState()设置新的URL可以是任意与当前URL同源的URL,而hash只能改变#后面的内容,因此只能设置与当前URL同文档的URL

  • pushState()设置的URL与当前URL一模一样时也会被添加到历史记录栈中,而hash#后面的内容必须被修改才会被添加到新的记录栈中

  • pushState()可以通过stateObject参数添加任意类型的数据到记录中,而hash只能添加短字符串

    ​缺点

  • 前端的URL必须和向发送请求后端URL保持一致,否则会报404错误

  • 由于History API的缘故,低版本浏览器有兼容行问题

Hash 模式

    ​优点

  • 兼容低版本浏览器

  • 只有#符号之前的内容才会包含在请求中被发送到后端,也就是说就算后端没有对路由全覆盖,但是不会返回404错误

    ​缺点

  • 会覆盖锚点定位元素的功能

  • 不太美观,#后面传输的数据复杂的话会出现问题



2

2024版 Web前端架构师

2024版 ,前端高手课!全局架构思维/系统培养大厂P7技术专家/中小厂前端Leader

1112 学习 · 2254 问题

查看课程