一、路由历史
传统的服务端路由,是根据客户端请求的不同地址,返回不同的网页内容。SPA之后,在url地址改变的过程中,通过js来实现不同UI之间的切换,也就是用js对DOM的操作。其中,根据url地址栏的变化二展示不同的UI,就属于前端路由。
二、前端路由
1. 基于hash
在HTML5的history API出现之前,前端路由主要是通过hash来实现的,hash能兼容低版本的浏览器。
location.hash是url中#之后的内容,与hash密切相关的是hashChange事件,在hash变化的时候会触发。hash要满足以下条件:
(1)url中hash值的变化不会重新加载页面,hash是用来指导浏览器行为的,对服务端是无用的,所以不会包括在http请求中;
(2)hash值的变化,都会在浏览器的访问历史中增加一个记录,也就是能通过浏览器的回退、前进按钮控制hash的切换;
(3)可以用欧hashchange事件,监听到hash值的变化,从而响应不同路径的逻辑处理。
window.addEventListener('hashchange', fuction, false);
我们可以在hashchange事件里,根据hash值来更新对应的视图,但不会去重新请求页面,同事在history中增加一条访问记录,用户仍然可以通过前进后退键实现UI的切换。
改变hash有两种方式: