返回资讯中心
外部精选
软件工程
#开发实践#Development Approaches, Libraries and Frameworks, Software Development, Web Development

盘点现代Web技术的七大失败案例

来源标题:Seven egregious failures of modern web tech

文章回顾了现代Web历史上七次严重的执行失败,包括Web SQL等曾被视为前景广阔的技术。Web SQL本意是在浏览器中提供关系型数据库以支持离线应用,但实质只是SQLite的封装,且受制于外部标准博弈,最终沦为单一厂商的死胡同。作者认为开发者应从这些失败中吸取架构教训。

InfoWorld2026/11/2 · 昨天24 分钟阅读

以下正文由 AI 翻译自 InfoWorld(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

现代Web是工程学的奇迹,但它的历史中充斥着在执行层面惨遭失败的天才构想。每一项成功落地的创新背后,都有一个曾经前景光明却一败涂地的技术。这些失败中的每一个都为我们软件开发者提供了前车之鉴。

新技术几乎是一种执念。我们热衷于凝视地平线上那些闪亮的新框架,但真正的架构智慧来自于审视残骸。从灾难性的版本迁移和对HTML的敌意企业收购,到无视Web物理规律和前端物理限制,我们有大量的残骸可以汲取教训。

以下是现代Web历史上七个最严重的执行失败——以及我们必须吸收的架构教训,以确保我们的好想法不会遭受同样的命运。

Web SQL:单一供应商的死胡同

好想法:将健壮的关系型数据库直接引入本地浏览器。实现响应式的、离线优先的Web应用。将其与作为记录系统的后端数据存储同步。

致命缺陷:外部标准政治。Apple推动了Web SQL,但它本质上只是对SQLite的原始封装。Google将Web SQL内置到Chrome中,但Mozilla和Microsoft表示反对,因为将其标准化意味着将整个Web规范绑定到一个特定的C库上。它被废弃了。

教训:标准需要共识。将Web基础设施绑定到单一实现上是突然被废弃的配方。尽管开发者失去了Web SQL并在笨重的IndexedDB下饱受折磨,该领域最终通过基于Wasm的PGLite以及更新的本地优先解决方案(如PowerSync)进入了更肥沃的领域。

Angular 2:破釜沉舟

好想法:在Angular的成功基础上,构建一个完全重写的、更好的版本。

当Hernán Cortéz著名的烧船之举,结果证明是一个绝妙的策略。对于主流Web框架而言?就不那么妙了。

Angular.js是单页应用(SPA)无可争议的王者,但它存在性能瓶颈。它感觉像是一个高效运转的拼凑之物。Google想要引入基于组件的架构,使其可维护、对企业友好且性能出色。但要做到这一点,他们必须首先将其彻底拆解。

致命缺陷:糟糕的实施策略。Google宣布了一次完整的、不向后兼容的重写,从根本上破坏了一切。对于大型企业代码库而言,没有清晰的迁移路径。

这为新的框架敞开了大门。React穿过那扇门,再也没有离开。

教训:永远不要破坏迁移路径。即使是一条艰难的道路也尊重你现有的用户,告诉他们开发者珍视他们的持续参与。

Facebook的Flow:温室里的番茄

好想法:JavaScript需要类型安全来满足企业需求。Flow引入了细粒度的类型推断,理论上可以用最少的手动注解保护大型代码库。

不幸的是,这个项目是一颗温室里的番茄。它是在Facebook受控的企业环境中构思和培育的。

致命缺陷:Flow是为Facebook的内部环境构建的。在Meta之外,Flow臭名昭著地充满bug,需要沉重的后台服务器,在Windows上会崩溃,并且忽视了更广泛的开源生态系统。Microsoft敏捷地填补了这一空缺,推出了TypeScript。

教训:开放的生态系统和无缝的开发者体验永远会击败先发优势和纯粹技术优越性等优势。即使你是一家巨型企业,也要让项目与活跃的、广泛的使用保持联系。

Google AMP:企业霸权秀

好想法:随着移动端的巨大增长,Web在 handheld 设备上难以提供体面的体验。我们在过去15年中培养的固有模式已经不够用了,导致移动网站缓慢笨重,充斥着沉重的包和未优化的资源。

Google AMP(加速移动页面)旨在成为一种标准方法,精简HTML、JavaScript和提供给移动设备的图像,并强制执行通用CDN(内容分发网络)缓存。Google有影响力来完成这一切。

致命缺陷:Google依靠强制手段来使AMP成功。此外,技术本身过于僵化。Google试图通过威胁搜索排名来迫使发布者使用专有的、精简的HTML子集。这是一个反竞争、反创新的噩梦。

教训:开放的Web标准获胜。伪装成“性能优化”的供应商锁定最终会被社区绕过并拒绝。

你可能不是在全球巨头工作,但类似的事情即使在中小型公司也会发生。当组织试图对基层程序员强制执行僵化的标准时,这会产生摩擦、怨恨和反抗。自上而下的命令在软件领域很少能顺利推行。

运行时CSS-in-JS:性能幻觉

好想法:大规模CSS是出了名的困难。全局命名空间冲突和特异性战争已经困扰大型代码库数十年。将样式直接放在JavaScript组件内部感觉像是一个启示。它封装了逻辑,消除了死代码,并使跨分布式企业团队的样式管理变得极其直观。

致命缺陷:我们忽视了底层平台。为了换取那美好的开发者体验,我们接受了一个从根本上 flawed 的运行时实现。我们花了五年时间强迫浏览器下载大量JavaScript包,只是为了在渲染周期中即时计算和注入样式。我们把浏览器以闪电般速度原生完成的事情——解析样式表——强行交给单线程JavaScript引擎来做,严重损害了初始加载时间并消耗了移动端CPU性能。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →