最近,我越来越深刻地意识到变化与惯性之间固有的张力,因为它适用于网络技术的演变和使用。这些力量一直存在并相互对立,但在我看来,这些碰撞的副作用对网络开发的影响越来越明显。
一方面,我们从未见过网络平台功能扩展方面取得如此大的进步;网络在功能上强大而成熟,以至于我们10年前的自己会对此羡慕不已。但另一方面,就像清爽的秋风预示着季节的转换一样,一股寒意正在弥漫,曾经狂热的 JavaScript 新特性发布速度也放缓了——你好,JavaScript 疲劳!——以及似乎每周都会发布新的 JavaScript 框架。
技术是一个用来描述尚未生效事物的词。
道格拉斯·亚当斯
正如亚当斯幽默的俏皮话可能暗示的那样,我们正在开发的软件(技术)还没有生效,因为它(以及它周围的一切!)一直在改变和发展,变得更好。
或者……至少在很长一段时间内是这样。但从我观察网络社区趋势的角度来看,我认为我们的社区正在从过去几年的快速扩张转向一个整合和建立的阶段。
似乎有一个预期的假设,即任何网络团队或项目都必须将其自身构建在 Babel、Webpack、TypeScript、用于标记的 JSX、styled-components(或某种 CSS-in-JS)以及少数几个 JavaScript 框架(如 React、Vue 或 Angular)之上。
这并不是说这些是唯一的选项。我知道 Jamstack 社区越来越多地采用静态站点生成,并且我知道新兴的 Svelte 社区希望消除所有前端框架的复杂性(或者至少他们声称如此)。
但老实说:我们现在在前端框架技术中看到的“多样性”更多的是表象而非实质。它们都使用某种类型的面向组件的机制(基于某种虚拟化的 DOM),并且随着每个框架的每个新版本发布,它们之间的相似性只会越来越大。我认为,在未来几年,我们将看到这个领域继续收缩,最终 Svelte 的最佳部分将被整合到 React 中,反之亦然。
所有这些整合对于 JavaScript、CSS 甚至 HTML 本身的发展速度意味着什么?核心网络平台技术会像以前一样不断发展,还是随着开发人员停止要求更多新功能并专注于充分利用现有功能,对这些变化的需求会减少?
前端技术是否已经“几乎”解决了?在我的整个职业生涯中,我们一直假设每隔几年我们就会看到前端的彻底重塑,在不断寻找那个统治一切的“完美框架”。我们是否即将达到那个点?
对我来说很清楚的是,社区现在更倾向于惯性而不是变化。那些有效的东西运作得如此出色——我们为什么要摇动船只,试图破坏和重新发明?创造出惊人的前端工具和框架的非凡才华(加上无数人类几十年来的辛勤汗水和泪水)可能最终做得足够好了,以至于我们不再集体关心要求它做更多的事情。
你能想象现在尝试推出 React 或 Vue 的竞争对手吗?你能想象尝试构建一个不同的工具来取代 TypeScript¹吗?这看起来确实是一个艰巨的挑战,可能不值得尝试。
大型玩家吸引了全球数百万网络开发人员的关注,并且他们在过去五年的激烈“变革”中幸存了下来。我们现在正在选择剩下的几个选项,它们的功能强大到足以构建我们想要的东西。这些解决方案可能不是理想化的绝对最大值,但它们无疑正在接近(至少)局部最大值。
在 2020 年这个奇怪的一年中,我们都经历了疯狂的挑战,也许在内心深处,我们都渴望一些无聊、稳定、可预测的舒适感。也许这至少部分反映在我们对技术的抉择中!?
坦率地说,在我的网络技术职业生涯中,将近二十年来,我一直押注于“变化”。但我认为我的赌注可能正在转向“惯性”的可预测性。我们应该假设默认情况下会坚持使用已知有效的方法,而不是不断寻找可能出现的“下一个”方法。
你的赌注在哪里?
- 就 TypeScript 而言,我当然可以。我已经尝试了一年多了!