- 原文地址:Which Projects Need React? All Of Them!
- 原文做者:SACHA GREIF
- 译文出自:掘金翻译计划
- 译者:sunui
- 校对者:LeviDing、Shangbin Yang
项目何时须要 React 框架呢?这是 Chris Coyier 在最近一篇博文中提出的问题。我是 Chris 博客的粉丝,因此我好奇他要说什么。javascript
简而言之,Chris 提出了一系列使用 React(或其余相似的当代 JavaScript 库)的优点和劣势。虽然我并不反对他的观点,但我依然发现本身得出了不一样的结论。css
因此今天我想说的是,对于“项目何时须要 React 框架”的答案不是“要看情況”,而是“任什么时候候”。前端
首先,说点题外话:在他的文章中,Chris 选择 React 做为通常意义上“前端库”的表明,那么我也同样。何况 React 是我维护的仓库 VulcanJS(一个 React 和 GraphQL 框架)中最熟悉的东西。vue
话虽如此,个人观点也适用于任何提供 React 相同特性的其余库。java
若是你手里只有一把锤子, 全部东西看上去都像钉子。react
这则谚语长久以来都被用于谴责一刀切看问题的人。android
但咱们假设有一段时间,你的确生活在布满钉子的世界(听起来有点起鸡皮疙瘩),那么你信任的锤子可以解决你遇到的任何问题。ios
想一想每次重复使用相同工具的好处:git
因此 React 会是这种工具吗?我以为它多是的!程序员
首先,咱们来看看最多见的反对“一切皆 React”的观点。我直接引用 Chris 原话:
举个例子,一个博客也许没什么复杂的逻辑,一点也不符合应该使用 React 框架的状况。既然在这种状况下 React 框架不是很合适,那么在这用 React 框架就不是好的选择。由于这么作引入了复杂的技术,依赖了不少根本没用到的东西。
说的很在理。一个简单的博客不须要 React。毕竟即便你须要一点 Javascript 处理注册表单,你也能够仅仅使用 jQuery。
什么?你须要在不一样页面的多个地方使用那个表单?还要只在某些条件下才显示?也要加上动画?等等,打住…
我用这个小情景想表达的主旨就是复杂性并非一个或是或非的问题,现代网站生活在一个连续的频谱上,从静态页面一直到丰富的单页应用。
因此可能如今你的项目正舒服地生活在“简单”的这一头,但这一路下去六个月后呢?与其陷入鸽子洞式的糟糕实践,选择一种留有成长空间的技术岂不更好?
过早优化是万恶之源。
这是程序员中流行的另外一则言语。毕竟,当胶带就能作的很好的时候,谁会须要锤子和钉子呢!
但这里作了一个假设就是“过早优化”是一个长期的少有成效的艰难过程。而且我以为这个不适于 React。
虽然 React 须要一些时间来习惯,但一旦了解了其基本概念,您就能像使用传统的前端工具同样快速上手。
事实上,也许更多的是由于 React 使用了很是强大的组件概念。就像 CSS 鼓励你考虑可重用的类和样式同样,React 带来了一个灵活的模块化前端架构,从简单的静态主页到交互式后端仪表板,为每个用例带来好处。
咱们生存在 JavaScript 的世界。就像 Chris 所说:
你经过 Node.js 构建服务端,也有不少项目能够经过 JavaScript 处理 CSS。如今经过 React 框架,你还能够在 JavaScript 里写 HTML。
万物归于 JavaScript!JavaScript 万岁!
Chris 不是很相信,但我相信。JavaScript 自己并不必定完美,但可以访问整个现代 NPM 生态系统太棒了。
过去安装一个 jQuery 插件要找到它的官网,下载下来,拷贝到你的项目目录,加一个 <script>
标签,而后指望记得每过几个月检查一下新版本。如今,安装和 React 包一样的插件只是 npm install 命令的问题。
使用像 styled-components 这样的新库,甚至 CSS 如今也被连带着尖叫着进入将来。
相信我,一旦你习惯了那种全世界都在说的语言,那就很难再回归到之前的方式了。
我知道你在想什么:目前为止我一直在推销 React 给开发者带来的好处,却当心翼翼的说起终端用户的体验。
而且这仍然是反对使用当代库的关键论点:缓慢臃肿的 JavaScript 站点却只是为了显示单个“奇迹淫巧”的广告。
此外还有一个小秘密:你能够彻底不引用 JavaScript 而得到 React 的全部优点!
我想说的是在服务端渲染 React。事实上, 像 Gatsby(还有 Next.js 等等)这样的工具能够把你的 React 组建编译进静态 HTML 文件中,这样你能够托管在 GitHub pages 上面。
举个例子,我本身的我的站点 就是一个 Gatsby-generated React 应用,没有加载任何的 JavaScript(除了一个 Google Analytics 片断)。 我在开发中发挥了 React 的全部优点(全 JavaScript,拥抱 NPM 生态,styled-components 等),而最终获得了纯 HTML 和 CSS 的最终产品。
归纳一下,这是我认为 React 是任何项目的可行选择的四个缘由:
因此 Chris,您以为呢?个人观点否足够使人信服?仍是您依然保持怀疑?
那么你呢,亲爱的读者?你以为像 Chris 所说每个工具都有它的用处,仍是赞成个人观点“锤子时间”就在眼前?评论起来让我知道大家的观点吧!
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、React、前端、后端、产品、设计 等领域,想要查看更多优质译文请持续关注 掘金翻译计划。