2 个回答

"#" url的hash模式
"#"号 后面的字符其实是一个位置标识符,最早的作用是,如果该网页中含有,该标识符的锚点或id,网页就可以自动滚动到该处

为什么会被SPA采用,也是因为#号的几个特性

特性1
"#"号 后面的所有内容都不会被发送到服务器, 假如你 访问
http://www.xxx.com/index.html#name=123 服务器 只收到 get /index.html 的请求。抛弃#以后所有内容
特性2
"#"号后面内空更改不会处罚浏览器刷新(对SPA特别重要),你可尝试一下,就你的这个问题页,在地址栏里的url最后加上#xxx 回车一下试试,这个页面不会刷新,

当然它还有一些其它的特性,但相对SPA来说可能没有哪么重要

为什么又出现了history 模式,
我感觉就一个原因,不好看

http://www.xxx.com/#/123.html
http://www.xxx.com/123.html

你说哪个URL更友好,更符合人们对正常URL的期待,history.pushState API比较完善以后,主流的SPA框架都对其进行了支持。
但是history模式,需要后端支持,如果不支持,就可能自动降级为hash模式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题