路由原理 history 和 hash 两种路由方式的特点
hash 模式
location.hash
的值实际就是URL
中#
后面的东西 它的特点在于:hash
虽然出现URL
中,但不会被包含在HTTP
请求中,对后端完全没有影响,因此改变 hash 不会重新加载页面- 可以为 hash 的改变添加监听事件
window.addEventListener("hashchange", funcRef, false);
- 每一次改变
hash
(window.location.hash
),都会在浏览器的访问历史中增加一个记录利用hash
的以上特点,就可以来实现前端路由“更新视图但不重新请求页面”的功能了。 - 特点 :兼容性好但是不美观
history 模式
利用了
HTML5 History Interface
中新增的pushState()
和replaceState()
方法
- 这两个方法应用于浏览器的历史记录站,在当前已有的
back
、forward
、go
的基础之上,它们提供了对历史记录进行修改的功能。这两个方法有个共同的特点:当调用他们修改浏览器历史记录栈后,虽然当前URL
改变了,但浏览器不会刷新页面,这就为单页应用前端路由“更新视图但不重新请求页面”提供了基础 - 特点 :虽然美观,但是刷新会出现
404
需要后端进行配置
THE END
暂无评论内容