经过技术选型研究,我们放弃了 React,转向 Vue

2018-12-22 14:39:22 +08:00
 nohup

因为几个项目下来,我们发现前端的应用过于卡顿,甚至还不如上一版本 JQuery Easy UI 做出来。在项目经理的会议主持下,我和前端同学在会议上就React 是否符合我们需求的问题充分交换了意见,最终会议决定放弃 React,转向 Vue。
具体原因如下: 我们应用需要每个 tab 内容显示 1000 个列表条目,每个条目显示一个文本状态和背景颜色,1000 个条目里随机每秒有一个改变文本状态。
之前有一版是用 JQ 的。JQuery 做出来的就初次只卡顿 2s,而 React 作出来每点击一次 button 却要卡的四五秒。经过前端深入对 React 研究之后,他认为这是 React 的缺陷-->无法很好地解决高频率渲染大量组件内容。

为什么无法解决呢?我不是前端,我这里拷贝一下前端的原话:

因为 React 在进行状态更新的时候,会进行判断每一个 listitem 的状态是否有改变。当然一两个组件这样就没啥问题,但是要是有 1000-1500 个小方块同时显示,而且每秒还要更新客户订单量,这样统计就会很卡了。你可以自己试一下,for 循环 1 到 1000,只输出一个文本,都会卡成狗屎,更别说 React 判断过程中不只判断一个 prop 属性呢,他要判断 N 个属性,你要在 1000*N 的判断之后,才进行渲染呢!我一开始就说用 Vue 会比较好,React 在 ERP 有嗯用完全搞不定那么多高频率的渲染需求的。“

而且我也觉得用 React 的大部分都是为了 CRUD 吧?如果像一些实时的高频率的刷新,抱歉,我和前端没看到哪一个大厂用 React 来做,感觉真的卡成狗屎。既然前端觉得 Vue 很 ok,那就让他去试试。

所以,各位认同 React 不适合大数据高频率的论点吗?

58184 次点击
所在节点    程序员
325 条回复
lufangfan
2018-12-22 17:18:44 +08:00
我是来学习的,希望会有大神能在这个话题下讲解。
bookit
2018-12-22 17:19:48 +08:00
不判断了,直接 1000 个全部更新要多长时间?

我觉得也不需要 5 秒。。。
ByZHkc3
2018-12-22 17:20:53 +08:00
大厂不用 react ????????????????
xuhaoyangx
2018-12-22 17:23:46 +08:00
我只按照移动端 Native 的方式来说.....这种列表,item 不是需要展示或快要展示时,才依次渲染么???? ,你让原生一下子全部渲染,并动态更改信息且每次都要全部渲染出来,也会卡啊。
wjl4107336
2018-12-22 17:35:00 +08:00
引战
Weny
2018-12-22 17:35:48 +08:00
水平太差,简单点一个 shouldComponentUpdate 解决 ,稍微稳妥一些上 immutable.js immer.js 。这个水平,怕是拉个高中生都写得比你们强吧。15 年的时候 react states 就有 immutable.js 做为解决方案了。几个国内大厂都有实践过,特别是在移动端。
reus
2018-12-22 17:43:22 +08:00
@wu67 既然引战就做好被喷的准备再来,受不了贬低就不要引战
React
2018-12-22 17:56:30 +08:00
https://github.com/jonmiles/react-performance-tests
这个是 15 年的测试,渲染 10000 个小方块,哪有你说的那么不堪
Arrowing
2018-12-22 18:01:31 +08:00
看到描述就知道楼主要挨喷了,果不其然,保重啊楼主。
Justin13
2018-12-22 18:11:41 +08:00
我大胆的猜测下,你们的每次更新都会改变所有节点的数据的引用。或者改变了某些下传的衍生数据的引用。
这都会导致每次都要更新整个组件树。
真正耗时间的一定是你们的 code 而不是 react 的 code。
shuhao
2018-12-22 18:17:31 +08:00
围观
Justin13
2018-12-22 18:19:59 +08:00
React 走的是函数式的路子,如果说写 React 的过程中需要通过深比较来控制刷新,只能说明你是在逆着 React 的范式在写,根本没有完全理解其思想。
基于同样的理由,我也反对 reselect 这个库。它虽然解决的痛点,但是光治标不治本。用了反而鼓励你继续乱搞。
jason94
2018-12-22 18:22:52 +08:00
吃瓜群众,前来围观
br00k
2018-12-22 19:42:55 +08:00
这样很难帮到你。整个 demo 出来找问题就简单了。
rrfeng
2018-12-22 20:31:10 +08:00
知乎上有个争论性问题上,有个回答说专门做高度复杂的 ERP 系统的,react 用的很好。

1 确实是水平不行怪框架
2 水平不行也不是什么错,选择合适的才对
3 angular 一样也可以选择啊
Biwood
2018-12-22 20:38:52 +08:00
楼主如果把问题的核心代码写个 demo 发到这儿来一起讨论一下就好了,标题和正文确实非常容易不必要的引起口水之争,看不到具体的代码实现,怎么吵都没有意义
leo8
2018-12-22 20:41:54 +08:00
想看下到底是什么原因造成的🧐
chen26
2018-12-22 20:53:35 +08:00
围观
creanme
2018-12-22 21:20:57 +08:00
你要不看看这个

https://www.zhihu.com/question/301860721/answer/541184853
平均 10000 条,在前端约进行 10 万次匹配
abcbuzhiming
2018-12-22 21:31:46 +08:00
前端三大 MVVM 框架论原理都是半斤八两的,我不认为他们的性能会有数量级的差别,所以我认为你们的前端压根就没抓住问题根本,所以你们用 Vue 多半还是会撞上这个南墙

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/519999

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX