AI图鉴

AI图鉴首页 › AI 资讯 › JavaScript 框架的人工智能成本

JavaScript 框架的人工智能成本

来源:Hacker News · 发布时间:11-01 · 由 AI图鉴每小时自动聚合

条款URL:https://nolanlawson.com/2026/10/28/the-ai-cost-of-javascript-frameworks/ 评论 URL:https://news.ycombinator.com/items?id=50323088 点:42#C

JavaScript 框架的人工智能成本

我对网络开发界的一个宠物小说是,我们所做的许多决定都是基于氛围的。 工具会“加速”你的开发,正确的抽象将有利于您和您的用户(DX和UX都在其中!所有这些无气息的自夸通常都是以零证据提供的。 Baldur Bjarnason将这个“前卫失落的十年”称为流行文化

长期以来,我们社区对证据的过敏性似乎是出于对更大的DX的渴望。 换句话说,devs只是喜欢在React中输入JSX的感觉,而推广React或相关工具的论据(“虚拟DOM是快的!”)主要是在浩劫后进行合理化,以证明这些最初的直觉感是合理的。 (Jonathan Haidt可能同意这一评估。 )

但在代理时代,当开发者不再手动打入代码,因此受到DX的制约较少时,我仍然看到气氛支配着这一天(而不只是"vibe-coding"的意思). 前端被重写,因为有些或另一种框架“对agents更好”。 (有人想问agents吗?由此产生的代码是“较快”,agents犯了“错误”,等等。 再一次,这些声称往往是在没有证据的情况下制造的。 每当我读到其中一个账户时,我都会想:“基准测试在哪里?”

嗯,我好奇,所以我写了一个基准测试。 这个基准测试的结构相当直截了当:

- 使用PokéAPI设计一个小型但非三角的Pokémon应用程序(那些跟踪我作品的人不会被惊叹)

- 指示 agents 以特定的 JavaScript 框架/ meta 框架构建应用程序(例如 Next.js, Nuxt, SvelteKit 等)

- 以Spec符合套件测试输出(以避免agent作弊)

- 在灯塔的开发时间、花费的纪念品、代码线、性能和无障碍性评分等方面评价成果

这个应用程序相当简单:您有一张Pokémon列表,您可以搜索、过滤等:

首先,我应该提出一些告诫:这不是一个完美的实验。 这个应用只代表一个holotype – 它是一个相对基于内容的网站,几乎没有交互作用,比Figma,GMail等更接近维基百科。 称,我不得不选择一些应用程序来构建,这个软件至少在高水平上容易理解,并且相对直截了当地进行检测。

为了尝试甚至竞技场,我让每个框架/meta-框架都使用官方的MCP或该工具的技能。 我想避免有人指责“这个框架在培训数据中代表性不足,我也没有指出该应用应该尽量发挥效果。 我只是以极大的努力给Opus 5.5 提供了这个规格,并告诉它使用给定框架的最新版本。 每个agent运行在一个沙盒中,并不知道会在灯塔进行性能和无障碍测试,虽然它得到了符合性测试套件。

除了避免使用Tailwind、Bootstrap或任何其他组件框架,以及基于一组光谱符号的设计,而不是JS框架,CSR vs SSR, SPA vs MPA等。 所生成的应用软件是用一个基于无障碍树而不是原始的DOM的兼容套件进行测试的,以避免强制使用任何特定的HTML结构 — — 一个框架使用依赖影子DOM的网络组件,所以需要这样做。

从这个实验中我学到的一件事是,我所测量的每件事物都非常有条理。 LLMs是随机字的生成器,所以有时你会得到一个低骰子卷,agent会在一些怪异的切换上浪费一串代币,没有通过框架或其工具的故障。 灯塔本身也可以产生不一致的结果:最大的内容绘画(LCP)可能决定一个图像是“最大的”元素,然后在下一次运行时选择另一个。 很难有一个完全公平的实验,但运行多个迭代确实有帮助

让我们看看结果。

结果

我将用多个维度来分解,对于每个框架/meta框架,我取了5个运行的中位数:换句话说,我在同一框架中构建了5次相同的应用。 (是的,这是那种赞美的事情你可以做编码agents现在。)

例外的是Angular,它两次没有创建工作应用,所以我接受了三个迭代。 (下文对此作了解释。 )

费用

且并不代表我花了多少钱。 所以这只是我每月100美元计划的一部分。

请注意差异:React路由器的中位数大约比Hono+htmx差1美元,但最便宜的React路由器(2.82美元)仍然比最昂贵的Hono+htmx(3.19美元)便宜。 然而,确实出现了一些可靠的模式。

最明显的是,SvelteKit,Gracile+Lit,以及Angular比其他框架更昂贵。 在SvelteKit中,这可能是由于agents在每次运行中都读作SvelteKit v3迁移指南,这可能是因为Opus 5.5的训练数据太新了。 对Gracile来说,agents也不太了解这个框架,对于Angular来说,它似乎是总代码大小的函数(见下文).

我还要指出,并非每个agent都使用MCP/skill/Claude Code插件,每个框架也没有一个:

点击查看AI 工具的使用

例如,TanStack Start的agent只在2/5运行中发现了其技能文件(它们被运入项目的节点单元)。 对于Nuxt,MCP从未被agents使用。 对于Next.js,agents只读作1/5运行中的技能文件,AGENTS.md则读作2/5运行中的技能文件。 这是一系列广泛的结果,这可以追溯到LLMs的浮沉性。 我仍然认为这是一个有效的实验,因为我怀疑许多气温编码器在全高喊着他们的agents,以使用MCP(而且很多可能完全跳过它).

若你想知道我是怎么找到Hono+htmx的:基本上我想用htmx作为代表,关于格拉西尔+ Lit,我想要通过他们的标准持有者框架(Lit)来代表网络组件,如果有更好的候选人,那么这些候选人对于后续试验来说将是非常有益的。

对于“Vanilla”,请注意agent被告知使用“vanilla JavaScript或带有Vite的TypeScript,没有UI框架”。 令人惊讶的是,这导致一些框架表现不佳,这似乎表明,有些框架可能比无更好(或者说比原始维特更好)。 Vite之所以被选中,是因为它使许多框架处于下层,并且代表了相当标准和不可知的JavaScript基础设施。

总的时间和标志相当接近成本:

顺便说一句,这些纪念物是由Claude Code报告的。 持续时间只是总的墙时钟时间。

质量

当然,因为我认为结果很重要,我还用灯塔测试了agents。 作为软件开发者,我认为重要的是我们不仅建造廉价的东西,而且建造得优美和方便。

我首先要提到两个关于我的基准测试的警告:

Pokémon应用程序很小

- 灯塔和核心Web Virtuals总体上偏向于SPA,因此MPA框架几乎可以保证在Total Blocking Time(TBT),JavaScript字节等度量衡上获胜。 我考虑增加一些应用中的性能衡量标准,但因它增加了基准测试的复杂性和可变性而退缩,这些将是我发明的衡量标准而不是行业标准。

我只向主页汇报得分,还有其他几页,但是它们都得分相当相似,或者它们在像LCP这样的度量中有狂野的摇摆,所以把它们包含进来只会使事情复杂化。

简言之,灯塔的性能、无障碍性和CLS(Cumulative Production Shift)得分几乎饱和

因此,为了获得一些更有趣的数字,我们需要看看其他的衡量标准。 最可靠的是发送的JavaScript字节,它主要跟踪客户端框架大小:

Total Blocking Time (TBT) 很有趣,因为它并非纯粹JavaScript字节的功能;有些应用在主线上花费的时间比其他应用多。 称的数字都很小:

最大的内容涂料(LCP)由于上述问题及其计量标准本身而变化很大。 如所料,它广泛惩罚最高人民会议并奖励海洋保护区:

请注意,Next.js数字的野性差异可以用一个应用避免懒惰的图像来解释,而另外四个则没有。 Astro和Vanilla也有类似的摇摆,这似乎是由优先排序或LCP突起引起的。

但总而言之,衡量标准往往会奖励使用HTML快速涂装的MPA,而非客户端JavaScript运行后涂装的SPA(同时可能还会有多个节奏来抓取Pokémon数据),忽略差异,这里的LCP主要是JavaScript捆绑大小的函数。 (Qwik在这里是一个显著的例外:从技术上讲,它是一个使用客户端路由的SPA,但它在MPA框架中得分).

请注意,有些框架在是否更注重客户端或服务器,甚至是否使用客户端框架方面各不相同。 例如,Gracile agent甚至没有在两次运行中使用Lit. 对于“Vanilla”,agent拥有完全的纬度(除了被告知使用Vite之外),但仍选择全部5次建造SPA。

SSR vs CSR也是Angular问题的部分来源:在2跑中,agent制造了SSRapp,拒绝非本地主机(尽管明确指示称,该app将会在反向代理背后). 我认为这是正当的未能遵守这个规格,并决定不再重运行两个失败的迭代。

可维持性

有很多方法可以衡量可维持性(包括诸如百科全书的复杂性之类的奇特事物),但我决定保持简单,并报告一些经过尝试和真实的事物:代码的总行。

对我来说,这是更有趣的图表之一。 从某种意义上讲,一个框架的整个要点是减少你需要维护的代码数量。 用Rich Harris难忘的话来说:

“框架不是组织你们代码的工具,而是组织你们思想的工具。”

- 里奇·哈里斯,“反思反应”

在代理时代,这个达到更加困难,因为代码大小最终会影响符号的数量,包括在未来的编辑中,这意味着它会影响随着时间推移而维持一个代码库的字面成本。 这并不意味着简洁是唯一重要的价值,但看到Hono+htmx可以和Angular一样

结论

有很多方法可以改进这个基准测试。 例如,您可以授权 agent 使用 Service Workers 进行离线缓存,或者优化 Pokémon 图像文件,或者使用懒惰加载,获取优先级,Speculation Rules API 等。 虽然我知道很多这些表演黑客

本文由 AI图鉴自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。

相关 AI 工具

相关免费羊毛

同源资讯

阅读原文(nolanlawson.com)

标题、摘要与正文均来自该信源的公开页面,版权归原作者所有;本站自动聚合与翻译,仅作出处跳转。

← 返回 AI 资讯列表AI工具图鉴首页

返回 AI图鉴首页 · 提交工具 · 商务合作 · 关于本站 · 604 款 AI 工具分类导航 · 每日 AI 热门项目与动态