前端路由指的是单页面的应用可以使用浏览器的后退前进按钮操作,但是却不会向服务器端重新请求页面,表现为浏览器地址栏会变化,但页面不重新请求。
有两种实现方式1.通过监听hash的变化,使用location.hash=xx来添加浏览器记录,location.replace,location.hash每被赋值一次就会产生一条浏览器记录,通过window.onhashchange监听路由变化,兼容ie8,android2.2支持,可以使用定时器模拟
2.通过html5 的history 的新api:pushState,replaceState,window.onpopstate 来实现。ie10以上支持,android4.2支持
pushSate方式对应典型的对应 React的 BrowserRouter, 需要后端配合一下,如果刷新访问到一个服务器没有的路径需要重定向一下,如果是node后台,可以直接使用connect-history-fadback-api
hash对应的是React的HashRouter 一般的hash 的url 是这样的 xxx/#/a #/a
有一个history.js 封装了 这两种路由,并提供统一的api,npm install history,还封装了一种 MemoryHistory用在手机上的reactnative没搞懂具体场景