关于 react/fre 同构
发布于 3 年前 作者 132yse 2000 次浏览 来自 分享

这是一个很坑的问题,我尝试解释清楚 react fiber 是一个异步渲染模型,它的目的完全是为了异步而异步,异步的目的是不阻塞浏览器 但是 ssr 的场景中,node 端的渲染必须是同步的(微任务也算同步),比如我们常见的 asyncData 和 getInitialProps 都是同步获取的

一旦同构,来自 server 端的同步请求,就会干扰 client 端的异步渲染 其实说白了,这个问题可以简写为:同一个组件,怎么在 server 端是同步的,在浏览器端是异步的? 再简化:怎样使得 Suspense 能用于 server 端,也就是说 Suspense 怎样在 server 端同步渲染,在浏览器端异步渲染,呢?

值得一提的是,只讨论 react 和 fre,像 vue、preact 等框架,本身浏览器端渲染就是同步的,没什么影响不参与讨论

2 回复

getInitialProps里做的是异步的事儿。没啥影响的。

来自 server 端的同步请求,就会干扰 client 端的异步渲染 没看懂你意思。在服务端请求之后客户端只需要复用dom就行。不需要重新请求数据。只有在切换路由的时候才需要重新发送请求,可以参考 https://github.com/ykfe/ssr

回到顶部