Aioga
AI资讯 / 行业动态
返回 AI资讯

为什么没有更多开发者“利用这个平台”?

Hacker News 热门Aioga 编辑团队2026-10-04T09:46:05.000Z热度 58

长期倡导“use the platform”的开发者撰文反思:浏览器曾长期落后于 jQuery 等库,加上开发者对 npm 与 React 生态的熟悉,导致自建方案更顺手。作者...

行业动态Hacker News 热门

今日 AI 情报摘要

长期倡导“use the platform”的开发者撰文反思:浏览器曾长期落后于 jQuery 等库,加上开发者对 npm 与 React 生态的熟悉,导致自建方案更顺手。

作者以自己参与 PouchDB、IndexedDB 等经历说明,亲手填补平台空白往往是学习 Web 平台、甚至进入 W3C 标准讨论的起点。

中文正文 · AI 翻译

诺兰·劳森的《软件与其他黑暗艺术》

发表于 2026 年 10 月 3 日,作者 Nolan Lawson:/author/nolanwlawson/ 在 网页:/category/web/,软件工程:/category/software-engineering/。

多年来,网页标准、性能和无障碍的倡导者一直呼吁网页开发者“使用平台”:https://timkadlec.com/remembers/2019-10-21-using-the-platform/。我经常也是这些倡导者之一。

论点很简单:当浏览器可以帮你完成时,为什么要自己用 JavaScript 去构建东西?你构建的任何东西,其性能和可用性很可能都比浏览器自带的功能差。

不过,我认为值得站在对立面来看待这个问题,即使只是为了理解“平台怀疑论”开发者的观点。如果“使用平台”如此明显,那么为什么还有这么多人似乎需要被说服?

最显而易见的原因是历史原因:长期以来,浏览器一直在追赶其上生态系统的发展。像 jQuery:https://jquery.com/ 这样的库填补了关键空白,而浏览器则在实现等效 API 时—即便如此,你可能还得等到像 IE6 这样的落后浏览器淘汰后,才能真正使用这些 API。如今,大多数浏览器都是常青版本(Safari 尚可辩论,虽然一年约 7 次更新:https://developer.apple.com/documentation/safari-release-notes 也不算太差),但直到 2020 年左右,网页开发者还得应对一个明显不平滑的网页:https://paul.kinlan.me/the-lumpy-web/。在那种环境下,自行构建是一个合理的选择。

另一个原因是熟悉度:当你习惯在 npm 上寻找 React 组件时,不论当前问题是什么,你倾向于首先去找它们。如果你在 npm 上搜索“sticky positioning”,不会有任何包告诉你“只要用 CSS 的 position: sticky,你这个笨蛋”。

即使有一个强大的标准,npm 上的库通常也能填补框架便利性与底层平台之间的有用空白。我总觉得很有趣的是,许多 React 开发者倾向于坚持使用 JSX 和 React 的习惯用法——原生 DOM API 感觉 "令人不舒服" ——但他们完全愿意在原生 DOM 操作很常见的情况下使用低级库。例如,一个虚拟列表库可能会为了纯粹的性能而愉快地使用原生 DOM API,同时提供更高层次的原语,让初学的 React 开发者更容易理解。从某种意义上说,React 组件生态系统促成了一个自然的分工,那些更有经验的人会将不熟悉的平台 API 封装成更熟悉的形式。

这种效果的一部分也由文档驱动。许多 npm 包都有精心编写的 README 或网站,包含示例、教程和截图。而在 MDN:https://developer.mozilla.org/en-US/ 成为网络文档的首选地点之前(web.dev:https://web.dev/ 作为 Google 更面向未来的分支),网络平台的文档分散在博客、StackOverflow:https://stackoverflow.com/ 和像 CSS Tricks:https://css-tricks.com/ 这样的网站上。而且许多这些网站只是告诉你使用一个知名库,比如 jQuery 或 GreenSock!

Screenshot of the Dragula website saying "drag and drop so simple it hurts" with a logo and stylized purple page versus the MDN page for the Drag and Drop API which looks much more subdued in comparison

不过,如果只是关于第三方库与平台 API 的对比,我认为这不足以完全解释对“使用平台”的反感。开发者如果很懒(或者我重复了?),只是想为他们面临的任何问题找到现成的解决方案,他们通常不会在意该解决方案来自 npm、浏览器,还是复制自某个随机的 GitHub Gist。他们只想解决问题然后继续前进。但我想探讨另一种导致反“使用平台”的原因。

对于某类开发者来说,自己动手构建东西更有趣。并且通常结果代码更容易理解,尤其是当你没有对网络平台有百科全书式的了解时。一旦你自己构建了某样东西,就可能出现一种宜家效应:https://en.wikipedia.org/wiki/IKEA_effect,你会希望维护和改进自己手作的代码。

举个例子,假设你正在尝试构建一个模态对话框。你可能在视觉上理解这些应该如何工作:内容出现在屏幕上,但背景仍然可见,虽然被部分遮挡,可能点击对话框外部会关闭它。所以你可能会使用 position:absolute 和 z-index 来正确定位对话框——啊哈,但背景仍然会滚动,所以你必须禁用 body 的 overflow……然后如果你对可访问性有一定了解,你会意识到需要处理 Esc 键来关闭,并构建一个焦点陷阱:https://css-tricks.com/a-primer-on-focus-trapping/,并将焦点返回到启动对话框的元素上,等等。

对很多开发者来说,我刚描述的情况听起来像是一场噩梦(而且很可能只能做出半成品)。但对很多开发者来说,这听起来很有趣!想想当你开始构建这个东西时,你能学到多少东西。再想想你可能通过添加动画、主题或者一个可选的“关闭”按钮来给它加上自己的特点……不知不觉中,你就构建了一个可以直接放到 npm 上使用的库。这比只是拿来用然后结束一天要有趣得多——多扫兴啊!

对于我们许多人来说,在像这样的 API 出现之前,这就是我们学习网络平台的方式!现在很多提倡“使用平台自身功能”的人,曾经也是 polyfill、shim 和库的作者。我之所以知道,是因为我就是其中之一!我花了多年时间致力于 IndexedDB:https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB、WebSQL:https://en.wikipedia.org/wiki/Web_SQL_Database 以及其他浏览器存储 API 的工具开发,这都是我在 PouchDB:https://pouchdb.com 工作的一部分,这最终让我有信心坐在 W3C 标准会议上,甚至在 IndexedDB 规范上提出问题和 pull request。如果没有平台中需要填补的空缺这种强迫因素,我不知道自己是否会有兴趣或动力达到那种专业水平。

当然,自行完成并不总是纯粹的好事。有时候这仅仅源于纯粹的无知。特别是在网络平台上,我认为导致出现大量用 JavaScript 解决本可通过 CSS 更好解决的问题的方法的原因之一,是许多开发者根本没有花时间去深入理解 CSS 是如何工作的。

公平地说,CSS 历来就难以理解!网站之所以称为“CSS Tricks”是有原因的。像 clear fix(https://css-tricks.com/snippets/css/clear-fix/)、浮动(https://css-tricks.com/almanac/properties/f/float/)以及 min-width: 0 技巧(https://dfmcphee.com/flex-items-and-min-width-0/)这样的东西几乎不直观。与其尝试理解 CSS 的内部算法,通常更容易直接想象你想要的命令式逻辑,然后用 JavaScript 表达出来。此外,多年来 CSS 没有简单的方法来表达常见模式,例如文本行截断(https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/line-clamp)、textarea 调整大小(https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/field-sizing)、隐藏滚动条(https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/scrollbar-gutter)等。所以开发者自然会用他们已经理解的工具来自行实现。

我甚至认为这种“规避平台”的现象不仅限于网络。它适用于任何在不完全了解的平台上工作的开发者。例如,在我的工作中,我们使用 ClickHouse(https://clickhouse.com/)来存储各种分析数据。在某一阶段,我和同事在如何在列中存储大 JSON 数据上有分歧:他建立了一个在存储前压缩数据的系统,而我则将数据放入一个独立的键值存储中,只将键插入 ClickHouse。结果我们两个人都错了!ClickHouse 会自动压缩数据(https://clickhouse.com/docs/guides/clickhouse/data-modelling/compression/compression-in-clickhouse),作为列式数据存储(https://clickhouse.com/resources/engineering/what-is-columnar-database),如果你让 ClickHouse 自己处理,实际上在行之间能得到更好的压缩效果。而独立的键值存储只是列式 SELECT 已经能做的事情的低成本版本。

我直到真正花时间仔细阅读 ClickHouse 文档,然后编写基准测试来验证我的假设后,才意识到这些事情。最后,我震惊地发现我们构建的东西比平台本身开箱即用的功能还要慢、更笨拙。与 JavaScript 和网页平台的平行之处令人难以忽视。

我相信,如果你是 iOS 或 Android 的开发者,或者在游戏引擎上构建的开发者,或者实际上是在任何平台层上构建的开发者,你可能都有类似的经历。有一个原因解释了“年长资深工程师”这一刻板印象:https://ponytail.dev/ 就是指能够将初级工程师那复杂纠结的代码替换为一行代码的人。你学得越多,就越能够运用你对整个系统如何端到端运作的知识,去创造最小的贡献(从而从长远来看减轻你的维护负担)。

我一直尽力在整篇文章中不谈 AI(因为过去一年我已经谈得够多了),但我当然忍不住想知道 AI 编码将如何影响这种现象。我实际上对此有乐观和悲观两种看法:

在我自己使用 AI 编码的过程中,我见证了这两种现象。我想相信,随着模型和编码工具的提升,我们会逐渐趋向乐观的结果,但我不能确定。

无论如何,这就是我关于“使用平台”的啰嗦且有些矛盾的想法。作为一种箴言,我很喜欢它,因为它简明地表达了我在看到某些复杂的意大利面式代码时的感受——我在想,如果作者对底层层次有更好的理解,这些代码会变得多么优雅。当然,我也曾是那个作者,也感受过构建这种美丽的混乱代码的乐趣(至少对我来说是美丽的),所以我认为理解这些开发者的出发点是值得的。基于这个原因,我相信只要有平台存在,我们就会一直听到“使用平台”。

你可以在 Fediverse 上评论:https://toot.cafe/@nolan/117379120140240160 或在 Lobsters 上评论:https://lobste.rs/s/srduzv/why_don_t_more_developers_use_platform。

Nolan Lawson

© 2011–2026 诺兰·劳森。RSS 订阅:/feed/。

情报判断

Aioga 编辑摘要

Aioga 编辑摘要:长期倡导“use the platform”的开发者撰文反思:浏览器曾长期落后于 jQuery 等库,加上开发者对 npm 与 React 生态的熟悉,导致自建方案更顺手。 Aioga 将其归入「行业动态」方向,重点关注它对真实使用和行业竞争的影响。

背景分析

背景分析:公司与行业类动态需要放在竞争格局、商业化路径、资本信号和监管环境中观察,单条公告不能代表最终结果。

Aioga 观点

Aioga 判断:这条动态更适合作为行业观察信号,当前信息足以建立线索,但不足以推导长期结论。

影响与后续

影响分析:对相关团队而言,短期应先核对来源、可用范围和实际成本,再判断是否值得接入或跟进。 后续观察:继续观察官方文件、合作落地、收入或用户信号、竞品动作和监管后续。

来源与版权说明

本页正文由公开来源页面提取并按原有信息整理,同时保留来源、发布时间和原文入口。版权归原作者及来源网站所有,请通过原文链接核验和阅读来源版本。

抓取通道: 摘要聚合 · 原始域名: nolanlawson.com

来源: Hacker News 热门

原文链接: 打开原始来源

Aioga 归档: 查看情报页

Content record: source-page · Updated: 2026-10-04T09:46:05.000Z

API 中转站
API RELAY · DEVELOPER INFRASTRUCTURE

API 中转站

统一接入主流 AI 模型 API,为开发、测试与生产环境提供稳定调用入口。

立即访问 api.w173.com
AIOGA SHARE POSTER

分享这篇 AI 情报

长期倡导“use the platform”的开发者撰文反思:浏览器曾长期落后于 jQuery 等库,加上开发者对 npm 与 React 生态的熟悉,导致自建方案更顺手。作者...

Hacker News 热门2026-10-04T09:46:05.000Z
扫码打开文章详情扫码直达文章详情

Aioga 自动聚合全球 AI 动态,并保留来源信息用于核验与引用。