CSR(Client Side Rendering) & SSR
CSR
SSR
同构
采用一套代码,构建双端(server 和 client)逻辑,最大限度的重用代码,不用维护两套代码。
路由同构
- 服务端:根据请求路径,匹配页面组件 ->> StaticRouter
- 客户端:通过浏览器中的地址,匹配页面组件 ->> BrowserRouter
// 服务端
const App = () => {
return
<Provider store={store}>
<StaticRouter location={req.path} context={context}>
<div>
<Route path='/' component={Home}>
</div>
</StaticRouter>
</Provider>
}
Return ReactDom.renderToString(<App/>)
// 客户端
const App = () => {
return (
<Provider store={store}>
<BrowserRouter>
<div>
<Route path='/' component={Home}>
<Route path='/product' component={Product}>
</div>
</BrowserRouter>
</Provider>
)
}
ReactDom.render(<App/>, document.querySelector('#root'))
注水(hydrate)、脱水(dehydrate)
数据注水
在服务端将预取的数据注入到浏览器,使得浏览器可以访问到
数据脱水
获取注入到浏览器的数据,将其传入组件