umi ssr 之从入门到放弃

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-29 15:24   172   0

今年7月份的时候用umi搭建了react ssr,发现了不少问题,记录一下,作为后来人选型的参考,是真正的从入门到放弃。如果下面罗列的问题你们自己有办法解决,那可以考虑使用,当然,以下仅供参考,可能官方后续会把问题解决。

1、本地开发的时候,每次修改代码,node都会重启,导致服务访问不了,开发效率很低。给官方提了issue,看回复应该是不改了

2、服务端渲染时,如果开启按需加载,会componentDidMount会执行两次,给官方提了issue(https://github.com/umijs/umi/issues/5351),没有看到解决方案,只能关闭按需加载。

3、服务端渲染发现很耗CPU, 单台服务器80左右并发时基本上CPU就被占满了。可能可以通过一些缓存方案解决不过这也挺麻烦的。

以上是影响比较大的问题。下面列一些问题,有一些解决方案,供已经在使用的同学参考。

1、如果在layout层使用了TransitionGroup和CSSTransition做页面跳转动画,会导致getInitialProps执行多次,因为他们渲染了多个实例。只能避免使用这些动画。

2、layout 如下写法导致在测试环境的时候,编译出来的标签嵌套有问题,从而导致样式错乱,但本地没事。解决方法是将{children}改成<div>{children}</div>

<section className={styles.container}>
    {children}
     <InitLoading isShow={this.state.isShow} />
</section>

3、较久没操作,会出现样式错乱。没找到具体原因,不过只在模拟器上有,真机和浏览器不开模拟器都没出现。

4、按官方的demo 和文档实现ssr,发现meta 没法成功渲染,发现是 react-helmet 不支持stream方式渲染,改成string 就行了,不过发布此文前,看官方的例子好像已经去掉了stream的设置。

5、打包完静态文件下载慢问题,这个是按官网demo通过node实现下载静态文件,当然官方demo已经提示要用Nginx,改成Nginx配置就好。

还有一些现象,算不上问题,不过在编程时会造成一些困扰。

1、当页面切换返回的时候getInitialProps异步操作可能比componentDidMount慢

2、getInitialProps返回的数据,在客户端并没有同步到model中

以上是使用umi 搭建react ssr 发现的问题,仅供大家参考。可能后续官方会将这些问题解决掉。不过其实除了手脚架本身的问题外。react 服务端渲染还有不少本身的问题:

1、两端同时操作cookie较为困难,虽然网上有一些库声称自己可以同时操作两端cookie,但其实服务端是通过一个对象去保存操作cookie数据的,在服务端的操作并没有同步到客户端。

2、编程时同时需要考虑服务端和客户端,可能提升了开发难度,降低了开发效率

3、不少库并不支持服务端渲染,这增加了开发的难度。

4、给服务端带来了不少压力

这是本人经过实践后,对react ssr 的一些思考,希望对大家有用。用umi 做ssr 遇到了不少问题,是真的从入门到放弃。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP