- 服务端路由:可以根据
URL去服务端请求对应的资源 - 单页应用:只有一个
index.html,其他的都是使用函数生成的页面
由于只有一个页面,所以我们可以在客户端控制页面的显示和隐藏,即客户端路由。
所以客户端路由的本质就是监听 URL 的变化,对对应的页面进行显示和隐藏。
又与为了两种方式,hash 模式和 history 模式。
区别在于:
-
hash的路由中有个#,而history没有; -
hash在路由在历史记录中无法找到,而history可以在历史记录中找到; -
两者的实现的
API不一样,但思想一致hash使用window.location.hash改变路由,使用hashchange监听改变history使用window.history.pushState改变路由,使用popstate监听改变
主要实现思路:
- 顶层使用
Router.Provider向底层提供path,History.Provider向底层提供前进、后退等方法 - 底层使用
Route消费顶层提供的path,判断当前的组件是否显示