保持警惕

Avatar of Robin Rendle
Robin Rendle

DigitalOcean 为您旅程的每个阶段提供云产品。 立即开始使用 $200 免费赠送额度!

几天前,Chris 写下了他对 Chrome 如何弃用 alert()confirm()prompt() 的看法,并收集了 来自开发人员的一堆想法。 如果某些功能可以被主要浏览器关闭,许多人开始担心网络的可预测性。

对此,我真的很喜欢 Richard Harris 的这篇笔记

我们不能将“附带损害是进步的代价”这种态度正常化,即使我们接受这个前提(我并不接受),即移除像 alert 这样的 API 代表着进步。 尽管存在缺陷,但网络普遍被认为是一个稳定的平台,我们今天做出的投资将经受住时间的考验。 在一个网站被视为本质上是短暂的物体,我们今天普遍依赖的 API 可能被明天的规范制定者视为不需要的包袱的世界里,网络已经输了。

我必须承认,这件具体的事我不太感兴趣。 但是! 我认为它揭示了软件和网络之间一个非常重要的区别。 以下是一个故事。

前几天,我一直在摆弄 Astro(我非常喜欢)。 我用它重建我的个人网站,然后我决定——在朋克摇滚的驱使下——升级到它的最新版本。 我认为它可能会让我的构建过程更快,并让我有机会探索新功能。 但不幸的是——一切都坏了。 API 被弃用了! 我的构建过程坏了! 一切都崩溃了。

这不是我在贬低 Astro。 我仍然很喜欢它。 但重要的是要记住,Astro 不是网络。 React 或任何其他框架实际上也不是。 这些团队可以随意弃用东西,尽可能地改进东西。 他们可以把一切都烧掉,重新开始。 但像 alert()、旧的 CSS 功能和 HTML 元素不在同一类别。 它们不能以相同的方式被弃用,因为正如 Jeremy 所说,网络需要可预测性。 我们不能把网络当作普通的软件,因为没有哪个团队或个人拥有这些功能。

我的抱怨的核心是:alert()confirm() 不是 Chrome 的功能,而是网络的功能。 但我担心许多人可能会这么认为。

这也是为什么标准如此重要! 在公开讨论新功能,让我们能够在将新功能发布到这个平台之前修复所有错误并回答所有问题,在这个平台上,你不能在意识到自己搞砸了之后就删除它。 我甚至没有真正贬低 Chrome,但这种 软件开放网络 之间的区别很重要,对吧?