素材巴巴 > 程序开发 >

选 React 还是其它?

程序开发 2023-09-19 07:51:41

好久不写 CSDN 博客了。几年了。

曾记得,写 CSDN 博客最耗神儿的,是排版……

现在我主要写公众号去了,还是一样的名字,如下图,欢迎关注。可以微信扫码或者搜索“光宇广贞”。嘿嘿。想预览的话,百度“光宇广贞”连好几页尽请观看。这并非技术类公众号……当然,本来我也从来没把 CSDN 博客当成技术类文库……

光宇广贞


说,是选 React 还是其它?

其它比如,Angular 及其衍生者 Vue 等。

说给管理者

现在很少有招 Angular 的了,至少在国内,前端框架选型的时候,几乎默认在 React 和 Vue 里面取舍,我说的是几乎。我也见过有两年内的初创公司上手 Angular 1.x 的……Angular 国内的市场想来远不如 React 和 Vue 的大。国外的另说。身处国内,我默认 Angular 已经被你淘汰掉了。

那么 React 和 Vue 你将如何取舍呢?你并不是开发者,或者并不是主要开发者,而是作为管理者,这种管理可能不仅仅是技术上的,也会有项目上的。你要保证你的团队能快速响应需求,能控制进度,更重要的,保证质量。

保证质量是一件极为可怕的事儿,迭代的版本多了,线上问题暴发的时候你就知道其威力无穷了。比如不知你是否见过写 React 的人在 render 里写 setState 的,以及在老式的 React 版本的 componentWillUpdate 里写异步阻塞的……关键是审代码的人也没觉得有何不妥……

当然了,你会觉得这太低级了。我们说个高级的,状态内循环和外循环搞得乱七八糟的,这还仅仅是在前端渲染循环内的,还没上设计模式实践……硬编码在组件内的微服务,比如远程数据访问……

而核心问题是,你所招聘来的人,大多数是数学不怎么样的,更不用提计算机理论,我在招聘面试的时候,问计算机专业的什么是“有限状态自动机”百有九十九的反应是——“没听说过”!也碰到过许多前端开发者和管理者坦言他们的数学是不好的……

无论是版本容量掌握、进度控制、质量管理,核心是你及你的团队对技术型掌握的深度。深度是需要素质配合的。鉴于国内市场情况,如果人力提供给你的生源很一般 ,以及财务给开的价格很一般 ,那么你基本上要把 React 排除在选项之外了——事实上你只有 Vue 可选。

选 React 不是说选 React,搞搞那几个生命周期函数,这是最为初等的。选它意味着你选了整个技术栈,React、Redux、Saga、Reselect……连同 css-module 及其 webpack 构建手段……包括设计模式,HOC、AOP,啊,对了,新版 React  已经内嵌了 AOP 的实践。这是一整套思想体系和工程组织的各部件的有机结合。React 的思想决定了它是一个体系的代表,只是这个体系的一部分。如果你的工程不需要 React 之外的东西的话,我相信你换通过 jQuery 操作 Dom 的手段去实践是完全可以的……

选 Vue 就容易多了。首先,它比较全面,它看起来就相当全面,一个文件里面可以把 template/html、style、js 写全了,似乎也相当有利于工程组织管理,也更“组件化(React:看来你的确对‘组件’这个概念有什么偏见)”。关键是,它简单。

Vue 看起来就简单。Vue 作为 Angular 的派生,继承了 Angular 的优点(和缺点),它允许你作为一个前端,把思维模式停留在传统前端,就是“操作 DOM”上,这让那些习惯 jQuery 套路的很容易地迁移到 Vue 上,一样是操作 DOM 的玩法,而且更好玩儿了。在 Vue 里,你根本就不需要像 React 去管理渲染,当然你是想管也管不了渲染,你只用管怎么折腾 DOM 模板。这是纯粹彻底的前端式思维,是个人就会。

Vue 提供给开发者的选项是那么地少,也就意味着开发者不用考虑那么多,用就是了,反正你也只能这么写。比如聊胜于无的 computed,对,computed,只要你会用 computed 你就是 Vue 高级开发;以及作为最后手段的 watch,对,watch,别忘了你用 Vue 根本就控制不了渲染,因此一切无法通过操作 DOM 处理的都扔 watch 里就是了。如是,这很省心,大家都省心。

如果面试的时候考查一下 VueX,会用的话就是 Vue 顶级开发了。毕竟 Vue 的作者对于 Flux 的态度是很矛盾的。他反对 Redux,因此把 Flux 给 Vue  化,从而改造成了 VueX。Vue 的作者认为 VueX 才是“前端最好”的 Flux 实践。

数学的好坏与对 Vue 的理解关系不大,这不像对 React 体系影响那么大,不是计算机专业出身,没学过计算机理论知识完全没关系。招聘市场变得极为广大。当然,人力价格也可以很“合理”。

省心、省事、省钱。对于管理者来说,Vue 是最佳选择。至少在绝大多数情况下是。

说给应聘者

首先,你得知道,Vue 和 Angular 的区别是什么。

Vue 和 Angular 最大的区别就是,Vue 没有 Service。不过,Vue 虽然没有 Service,但 Vue 可以配置 Service,因此有 Vue.use 这么一个接口。

Vue 本身就是 Directive/Component。因此,Vue 就是个“轻型 Angular”。

所以你学什么 Vue,你学 Angular 就是了。

如果你没有 OOP 经验,你要学 Angular。然后 Vue 就跟玩儿一样。

让你学 Angular 不是让你去应聘 Angular 的岗位。作为实践手段,Angular 已经过时了,但是作为工程思想,它很有深度。就好像 C++ 一样。你必须学,最好学会。

那 React 呢?未来是 React 的。

但不是现在,现在的你先用 Vue 吃饭就是了。

当然,不甘只吃口饭的仁人志士,需要搞 React 全家桶。

首先,你数学要好。起码,这种描述你一听就懂:给定初始值集合和演进算子,即是完备的生命周期。你编码要做的就是驱动整个生命周期演进。

你得知道些计算机理论知识,起码“有限状态自动机”的概念要有。然后 Flux/Redux 你就好理解了。

你得具备软件工程知识,明白解耦合的设计理念,要了解微服务、CQRS、DDD、AOP,然后理解并习惯 HOC。注意单继承关系。然后,要用。

等等……你这说的是 Javascript?怎么听起来像 Java……没 script 的样子……

Java 只是在这些地方做得比较好,之所以好也是得益于 Java 框架生态,其它语言框架生态都在迎头追赶,而 Javascipt 方面只有 React 生态有这种素质可以实践和前进。

Redux 是天然可 Saga 化的,Redux 可以是 EDA,因此有 redux-saga 这么个东西。而 Vue 作者直接打掉了 VueX Saga 化的素质。当然,Vue 的作者可以再搞一个 Vue 版的 Sage,比如 VueSaga。但这已经让 Vue 够呛了。你该怎么兼容 Event Sourcing 呢?你不透明。

或者说 Vue 不认为这是前端该考虑的东西。

但这是你该考虑的东西。

Angular、Vue 的出现代表了什么?代表了前端工程化方向的发展,而既然你已经开始往这个方向走了,这个方向的前景是不设限的。工程化的发展必然向着体系融合的方向走,前后端将会融合,从思想体系到工程体系。试想容器化前端的未来?到时候可能 React 和 Vue 都已经落后不适用了,但至少,现在的你需要清楚,怎么样的思想实践,是有利于你迁移到这个未来的。

可能那个未来并不在眼前。但眼前也有值得你考虑的地方——那个更有利于你从前端转向服务端,向体系结构走,向着更有钱途和地位的方向发展~

总结

Vue 最实惠,React 有前途。

结合自身。

请关注我公众号。

光宇广贞


标签:

素材巴巴 Copyright © 2013-2021 http://www.sucaibaba.com/. Some Rights Reserved. 备案号:备案中。