前端路由的实现前端路由分为两种实现方式:
HashHistory,通过修改location.hash,然后监听hashchange事件来进行对应操作。
BroswerHistory,通过HTML5提供的History对象的pushState、replaceStateAPI,然后监听popstate事件来进行对应操作。
二者的优劣:
第一种方法兼容性更好,但是实现比较复杂,并且url比较丑陋(例如:http://www.test.com/#/xxx)。
第二种方法是浏览器提供的能力,所以实现比较简单,url与正常相同(例如:http://www.test.com/xxx),但是可能存在兼容性问题。
其实还有第三种,MemoryHistory,用于non-DOM环境下,例如React Native。
阅读全文