React 是我在山羊群中发现的宝藏
像许多开发人员一样,我想我对 React 的第一反应是拒绝。
- 这只是另一种很快就会消失的 JavaScript 趋势
- 用 JavaScript 编写 HTML 是愚蠢的
- 我永远不会厌倦 jQuery
- 今晚我一定会早点睡觉。
事实证明,我之前的所有想法都是错的,但在做了实际研究之后,我开始改变主意。最近有一篇文章给出了一些令人惊讶的统计数据。React 的增长速度已经超过了其他 JavaScript 框架,照此速度下去,其使用率将超过 Angular。它在用户满意度方面胜出,包括与 Vue 的竞争。React在 Indeed.com 招聘信息受欢迎度方面击败了 jQuery,这是它十多年来首次失利。
于是我放下自尊,戴上学习帽,开始钻研 React。我通读了文档,阅读了分析其优缺点的文章,还做了一些教程。但我的最终考验是我的 JavaScript 通关仪式——用它来重现著名的蒙提霍尔困境。我在学习 jQuery、Angular 和Vue时也做过同样的事情。现在轮到 React 了。
结果如何?React 顺利通过了,彻底打破了我最后的怀疑。查看最终结果和代码仓库。
这篇文章其实并非关于我如何编写这个应用的——我觉得它并没有足够多有趣的技巧来支撑一篇完整的文章。相反,它想讲述的是我开发这个应用的过程中,我对 React 的看法是如何改变的。
等一下,为什么会出现蒙提霍尔困境?
如果你以前没听说过,蒙提霍尔困境(MHD)是一个著名的逻辑小谜题。你面前有三扇门,一扇有宝藏,两扇有山羊。你选择其中一扇门,但在这扇门揭开之前,主持人会打开另一扇有山羊的门。现在你需要选择:继续选择你选择的那扇未开的门,或者换到另一扇未开的门。从统计学上讲,换门可以让你获胜的几率翻倍。
我发现 MHD 是学习工具或框架的最佳选择。它足够简单,即使是初学者也能轻松掌握,但又足够复杂,能够创造性地解决并克服大型项目中的常见问题。最重要的是,到最后我知道自己是否适应这个新工具。
最后,它让我可以写一些引人入胜、吸引点击量的博客文章标题,就像这里一样。这难道不是最终最重要的吗?
React 为什么做得这么好?
这个问题很难回答,因为我喜欢 React 的原因很广泛。大多数原因已经在许多 React 文章中讨论过了:
- React 组件及其样式极其模块化,这非常符合我对面向对象编码和原子设计的偏好。
- React 的虚拟渲染引擎使其可以在 Web 之外使用,例如用于移动应用程序和虚拟现实。
- 上述虚拟渲染引擎,结合单向数据绑定和条件渲染,让 React 运行速度非常快。谁不喜欢快速的应用程序呢?
- CSS 模块。说得够多了。
但我喜欢 React 的主要原因似乎违反直觉:它没有“框架魔法”。
使用 React,你需要掌握基础知识
你可能会想,为什么“需要更多工作”反而是优点。我用过的框架,比如 Ember 和 Rails,就为秉持“约定优于配置”理念的开发者省去了很多工作。我并不反对这种做法,尤其是对于那些需要快速启动和扩展应用的经验丰富的开发者来说——它节省了时间,让一切顺利进行。React 也有一个“创建 React 应用”功能,可以创建一个基本的、预配置的 React 项目,所以它的优势也不亚于此。
但从本质上讲,React 是一个库,而不是一个框架——它没有那种魔力。即使使用 Create React App,我也无法忽略基本的 JavaScript——函数、ES6、作用域、闭包、导入和导出、解构等等。我无法忽略应用程序的工作原理、结构以及数据的来源。而且,只有通过整体上编写更好的 JavaScript,我才能编写出更好的 React,这才是我最终想要的。
这对我来说很重要,因为使用基于更完善基础知识的工具可以帮助我作为初级开发人员学习,并避免“冒名顶替综合症”。React 不需要太多库本身的理解,但需要扎实的 JavaScript 知识。初学者学习曲线更高,这也是我长期推迟使用 React 的原因,但我认为我误解了它。这条曲线源于对语言本身的更多学习,而不是库本身。我更渴望克服这条曲线,我会尽一切努力去克服它。
在积累这些基础知识的过程中,React 将会是很好的选择。未来几年,它可能只会在业余项目中使用,但即便如此,我也会继续使用它。我已经有了一些想法,包括使用Gatsby.js重新设计我的个人网站,以应对“五一重启”挑战。
通常我不会从山羊寻宝游戏中学到这么多。没想到这里的“宝藏”竟然是一个我最近很喜欢的 JavaScript 库!
文章来源:https://dev.to/maxwell_dev/react-is-the-treasure-i-found-among-the-goats-pce