ReactJS 真的好吗?

作为一个多年前端工程师,我认为ReactJS在真正开发大型复杂系统的时候并不好,首先最让我诟病的一点就是,一个页面的HTML模板被完全碎片化了,被分散…
关注者
1,344
被浏览
326,377

62 个回答

刚看到这个问题的时候就想回答,但前后几个月才渐渐把思路组织好,昨天在平安那边的技术分享上,讲了这个主题,文本内容地址如下:

Web应用组件化的权衡 · Issue #22 · xufei/blog · GitHub

幻灯片如下:

xufei.github.io/slides/

我的主要内容其实不是用来当做对“React真的好吗”这个话题的回答,而是针对React或者其他框架所能够带给我们的组件化开发方式的一些思考,以及这些组件化开发方式可能会对我们的工程应用造成什么样的影响和改变,组件化是否必然好,在工程实践中有怎样的权衡。

我的观点是,大面积的模板是有它的意义的,全组件化体系的工程负担是比较重的,在Web应用领域全面组件化还是一个比较长期的路,而且Web体系当前自身的一些特性,也对全组件化有一些制约。

@Saviio

的答案中,引用了一个链接:

还要多少年, 前端开发才能像客户端开发那样轻松? - HTML5

,这里面有个回答是我的,但我要说的是

@Johnny Wu

当时的那个回答

还要多少年, 前端开发才能像客户端开发那样轻松? - Johnny Wu 的回答

,这个回答非常好,组件化的实施也做得好,但我们需要认识到,他这个项目有其特殊性,目前存在的绝大部分Web应用并不是这个形态,这世界上大部分东西都不过是普通的东西,对这些东西来说,把各方面门槛提高太高并不一定是好事,正好比我们现在有能加工0.1毫米精度的机床,但在加工大部分产品的时候,只会使用1毫米精度的,因为绝大部分产品并不需要这样的精度,提高不必要的精度可能会导致成本上升,对人员技能的要求也大幅提高。

我们看到ReactJS本身的定位还是一个相对大众化的框架,它并不期望自己会成为小众,一切组件化框架都不会期望自己成为小众,那么,为它们推出组件化的工程实施方案的时候,是不是需要存在兼顾高端和低端产品、人群的考虑?

所以,我提出,在大部分Web应用中,只适合使用“半组件化”,也就是基础部分组件化,业务上层适当松散的方式,就是基于这些权衡。

在移动端,适合全组件化的产品比重会较高,因为方寸之地,组件树一般不会特别复杂,工程代价不会很高,对生产力的提高比较明显。

组件化开发终归是个好事,前提是你们的前端Leader,还有设计师团队能想明白这件事儿……