Cloudflare 工程师用 AI 一周重写 Next.js,成本仅 1100 美元

Cloudflare 工程师用 AI 一周重构 Next.js,成本仅 1100 美元!基于 Vite 的 vinext 框架,构建更快,包更小。

原文标题:只要1100美元tokens,一周重写 Next.js!

原文作者:机器之心

冷月清谈:

Cloudflare 的工程师借助 AI 模型,用一周时间、花费约 1100 美元 tokens,从头重建了 Next.js,并将其命名为 vinext。Vinext 基于 Vite 构建,旨在提供与 Next.js 相同的开发体验,并能无缝部署到 Cloudflare Workers。 初步测试显示,vinext 在构建速度和客户端包大小方面均优于 Next.js。 该项目保留了 Next.js 的出色开发体验,无需定制工具。工程师将 Next.js 的 API 接口在 Vite 之上重新实现,利用 Vite 的原生 ESM 和轻量构建管线,实现了更快的构建速度和更小的客户端包体积。整个过程由一位工程经理牵头,通过与 AI 模型进行 800 多次交互完成,并经过了大量的单元测试和端到端测试。Cloudflare 认为该项目之所以能够成功,归功于 Next.js 完善的文档和测试体系、Vite 成熟的基础工具生态以及 AI 模型能力的跃迁。AI 在此过程中扮演了协作伙伴的角色,主导了大型系统级实现,并促使我们重新思考哪些抽象是真正基础的,哪些只是为了适应人类认知构建的“拐杖”。

怜星夜思:

1、你认为 AI 在未来的 Web 开发中会扮演什么样的角色?是像这次一样作为加速器,还是会取代部分开发者的工作?
2、Cloudflare 用 AI 重构 Next.js 的案例,是否意味着前端开发的门槛会进一步降低?这对行业来说是好事还是坏事?
3、如果让你用 AI 重构一个现有的前端框架,你会选择哪个?为什么?

原文内容

图片
编辑|冷猫

今天,Web 开发社区爆发了一条令人咋舌的技术新闻。



Cloudflare 的一名工程师在一周之内,借助 AI 模型从头重建了 Next.js 。


该公司的首席技术官 Dane Knecht 发推庆祝这一史诗级的成就,称之为「Next.js 的解放日」,Next.js 属于每个人。



Cloudflare 称,在这次重构中,保留了 Next.js 的出色开发体验,没有定制的工具,打造了一个基于 Vite 构建的,名为 vinext 的替代框架。


Vinext 是一个可以无缝替换 Next.js 的框架,只需一条命令即可部署到 Cloudflare Workers


在早期的基准测试中,它构建生产应用的速度最高可达 4 倍,生成的客户端包大小最高可缩小 57%。而且目前已有一些客户在将其用于生产环境。


最夸张的是,整个过程大约只花费了价值 1100 美元tokens


Cloudflare 发布了该工作的介绍博客,感兴趣的读者可以进行参阅。



  • 博客链接:https://blog.cloudflare.com/vinext/


从 Next.js 到 vinext 的实验性进化


Next.js 的影响力与困境


Next.js 是当前最大的 React 全栈框架之一,它定义了数百万 web 应用的开发方式,尤其在 SSR(服务器渲染)、RSC(React Server Components)、静态生成与渐进再生(ISR)等特性上的创新,使其成为现代 Web 的标配。


然而,这把双刃剑也带来复杂性:它的构建工具 Turbopack、专有构建输出,以及与平台无关的部署流程,一直是生态中反复被提及的痛点。 


以 Next.js 的构建输出为基础进行二次构建,是一种困难且脆弱的方法。过去几年,社区尝试使用 OpenNext 等适配器解决 Next.js 在云平台(尤其是 Cloudflare Workers)上的部署问题,这些工具通过转换 Next.js 的构建输出,使其在 V8 沙箱等环境下运行。但这种「转译层」经常与 Next.js 的版本更新相互博弈 —— 就像打地鼠一样,不断修补边缘兼容问题。


Next.js 一直在开发一个一等公民级别的 adapters API,目前这仍处于早期阶段。但即便有了 adapters,本质上仍然是构建在定制化的 Turbopack 工具链之上。而且 adapters 只覆盖构建和部署阶段。


在开发阶段,next dev 仍然只能在 Node.js 中运行,没有办法接入其他运行时环境。如果你的应用使用了平台特定 API,比如 Durable Objects、KV 或 AI 绑定,那么在开发环境中就无法直接测试这些代码,只能通过各种变通方案来实现。


Vinext 的方案


针对这些麻烦事儿,Cloudflare 的工程师提出,如果我们不去适配 Next.js 的构建输出,而是直接在 Vite 之上重新实现 Next.js 的 API 接口,会怎么样?


Vite 是除 Next.js 之外,大多数前端生态所使用的构建工具,驱动着 Astro、SvelteKit、Nuxt 和 Remix 等框架。


Vite(法语意为「快」)是一款现代前端构建工具,它通过重新设计开发和构建流程,让 Web 开发的体验变得 极速、直观且高效。它最早由 Evan You(Vue.js 创始人)提出,并在 2020 年正式发布,迅速成为了整个前端生态的核心基础设施之一。 


传统的前端构建工具(例如 Webpack 或 Parcel)会在启动开发服务器之前,把整个应用代码全部打包处理,这在大型项目中会带来明显的延迟。而 Vite 的理念则是借助现代浏览器和生态的新能力 —— 原生 ES 模块(ESM),彻底改变这一体验。


在安装 vinext 后,只需在脚本中将 next 替换为 vinext,其余一切保持不变,现有的 app/、pages/ 以及 next.config.js 都可以直接使用。


初期基准测试显示,vinext 在构建速度和客户端 bundle 大小上都有显著优势:


  • 在某 33 路由应用上,利用 Vite 8(Rolldown)构建,vinext 构建时间比 Next.js 快约 4.4 倍

  • 客户端 bundle gzipped 大小比 Next.js 小约 56% 以上。 



这一数字并非偶然。Vite 生态的原生 ESM 和轻量构建管线使得整体构建过程比 Next.js 传统的 Turbopack 更加敏捷,而 AI 成功编写可通过严格测试的实现代码,则是这一成果得以快速达成的关键。


不过官方也强调,这仍然是一个 实验性项目。vinext 上线时间不足一周,尚未经过大规模流量考验,某些 Next.js 的静态预渲染方案(静态 build 预挂载生成)仍未完全覆盖,需要进一步打磨。


完全用 AI 完成重建


根据 Cloudflare 官方博客,整个项目由一名工程经理牵头,只用了大约 一周时间、约 800 多次与 AI 模型交互的 OpenCode 会话、以及合计约 1100 美金的 AI token 成本,就搭建出了一个 兼容 Next.js 16 API 的替代框架。 


项目从 2 月 13 日第一条提交开始:


  • 当天晚上,就实现了基础的 Pages Router 和 App Router 的 SSR 渲染、Middleware 支持、Server Actions 等。

  • 第二天下午,App Router Playground 可渲染绝大多数路由。

  • 到第三天,vinext deploy 已能将应用打包并发布到 Cloudflare Workers,并支持客户端水合和导航。

  • 剩下几天则用于完善测试套件(包括 1700 多个 Vitest 单元测试和 380 多个 Playwright E2E 测试)和覆盖 Next.js API 94% 的测试验证。 


该项目是 AI 在工程师设定架构规范、分配任务、执行反馈循环的协助下逐步逼近高质量实现的结果。



为什么一个如此夸张的项目能在一周内实现?


Cloudflare 的解释是「天时地利人和」,并不是所有项目都能用这种方式完成。这个项目之所以可以,是因为几个关键条件在同一时间点同时成立。


1. 目标 API 已有良好文档和测试覆盖


作为主流开源项目,Next.js 拥有详尽的文档、庞大的用户群体,以及多年积累的 Stack Overflow 问答和教程。它的 API 早已广泛存在于训练数据之中。如果让 Claude 实现 getServerSideProps,或者解释 useRouter 的工作原理,它不会产生幻觉。它真的「知道」 Next.js 是如何运作的。


Next.js 拥有一个非常完善的测试体系。Next.js 仓库中包含数千个端到端测试,覆盖几乎所有功能和边界情况。工程师直接移植了测试,提供了一份可以机械验证的说明书。



2. 基础工具生态成熟


Vite 作为现代构建工具,Vite 已经解决了前端工具链中最困难的部分:极速 HMR、原生 ESM、干净的插件 API,以及生产级打包能力。它既能处理模块化构建也能扩展 RSC 等高级特性,为实现提供了稳定基础。


3. AI 模型能力跃迁


即便在几个月前,这件事都不可能完成。早期模型无法在如此规模的代码库中保持长期一致性。新一代模型可以在上下文中容纳完整架构,推理模块之间的交互关系,并足够频繁地产出正确代码,从而维持项目推进的节奏。当前最先进的模型确实令人印象深刻,而且还在不断进步。


软件中的大多数抽象层,本质上是为了帮助人类管理复杂性。人类无法在脑中同时容纳整个系统,于是构建了分层结构来组织复杂度。每一层都让下一位开发者的工作更容易。


于是,我们有了「框架的框架」、包装库、成千上万行的胶水代码。


但 AI 并没有同样的限制。它可以在上下文中持有整个系统,然后直接写代码。它不需要一个中间框架来维持组织结构。它只需要一个规格说明和一个可靠的基础。



这一案例之所以受到社区热议,是因为它是一个清晰的拐点:AI 真正作为协作伙伴参与、主导大型系统级实现。并且,AI 抛弃了很多中间框架,让真正基础性的代码部分和便于人类认知代码结构的分界线逐渐显现。


正如 Cloudflare 博客文章最后所感叹的那样:「我们不确定哪些抽象是真正基础的,哪些只是为了适应人类认知构建的『拐杖』。AI 的出现正促使这一边界重新被定义。」


© THE END 

转载请联系本公众号获得授权

投稿或寻求报道:liyazhou@jiqizhixin.com



除了构建速度和包大小,实际生产环境的选型还会考虑:

1. 生态系统和社区支持:Next.js 拥有庞大的社区和丰富的插件生态,遇到问题更容易找到解决方案。Vinext 作为新兴框架,生态可能还不够完善。
2. 长期维护和升级:Next.js 由 Vercel 团队维护,有稳定的更新计划;Vinext 的未来发展和维护力度存在不确定性。
3. 团队熟悉程度和学习成本:如果团队已经熟悉 Next.js,迁移到 Vinext 需要一定的学习成本。
4. 特定功能支持:Next.js 可能有一些 Vinext 尚未支持的特定功能,例如 Image Optimization、国际化路由等。
5. 稳定性:虽然宣称通过了大量测试,但未经大规模生产环境验证,稳定性不如 Next.js。
6. 价格:虽然构建 vinext 只花了 1100 美元,但是后续的使用 AI 的成本呢?微小企业的试错成本是很高的。

所以,选型不能只看性能指标,需要综合考虑各种因素。

我觉得那些为了解决人脑难以处理复杂性的框架,最有可能被淘汰。例如:

* 大量的胶水代码:用于连接不同模块或库的冗余代码。
* 过于复杂的配置:例如webpack的各种loader和plugin,AI可以直接生成最优配置。
* 低代码/零代码平台:虽然降低了开发门槛,但也牺牲了灵活性,AI可以直接生成定制化代码。
* 过多的设计模式:在简单场景下过度使用设计模式,反而增加了代码的复杂性。

AI 可以直接生成高效、简洁的代码,避免了中间框架带来的额外开销。

个人认为,是否能取代,得看 Cloudflare 对 Vinext 的投入力度。如果 Cloudflare 愿意投入资源,完善 Vinext 的生态,吸引更多的开发者加入,那 Vinext 还是有希望的。但如果 Cloudflare 只是把它当做一个实验性项目,那 Vinext 可能很快就会被遗忘。

我倒是觉得没必要太恐慌。AI 擅长的是重复性的、有明确规范的任务,而真正的创新、解决复杂问题还是需要人类的智慧。这次重写 Next.js 也是在 Next.js 已经有完善的文档和测试用例的前提下完成的。所以,与其担心被取代,不如拥抱 AI,学习如何更好地利用它来提高我们的工作效率。

这个案例预示着前端开发人员需要提升自身的抽象和架构设计能力。AI 可以承担大量的代码编写工作,但对问题的理解、架构的设计和最终的把控仍然需要人来完成。我们需要更像一位“指挥家”,而不是单纯的“代码工人”。

个人认为,这可能会加速前端构建工具的标准化进程。Vite 的成功和 Vinext 的尝试,都表明社区对开放、标准的构建工具有着强烈的需求。如果更多的框架和工具都采用类似 Vite 的标准,那么前端开发者的学习成本和迁移成本将会大大降低。

我觉得这个观点很深刻。之前我们总想着把复杂问题拆解成小问题,然后用各种框架和设计模式来组织代码。现在 AI 告诉我们,也许可以跳过这些中间环节,直接从结果出发。这就像是从手绘图纸到直接 3D 建模,效率提升是毋庸置疑的。不过,这也要求开发者对问题有更深刻的理解,才能更好地指导 AI。

除了刚才老哥说的兼容性,我觉得生态也很重要。Next.js 背后有庞大的社区和丰富的插件生态,vinext 如果没有这些支持,很难吸引开发者。我会关注 vinext 如何构建自己的生态。

这简直是重新定义了软件开发的底层逻辑!以前我们为了方便理解和管理,人为地加了很多抽象层,现在 AI 可以直接处理复杂性,这意味着我们可以更接近问题的本质,写出更精简、更高效的代码。当然,也对我们提出了更高的要求,要更懂底层原理。

我觉得潜力很大,但成为主流还得看后续发展。好处是以后可能更多精力放在设计和架构上,重复性的编码工作交给 AI,提高开发效率。但同时也意味着对工程师的抽象能力和问题解决能力要求更高了,不会用 AI 的可能要被淘汰。

长期来看,我觉得会对前端开发范式产生深远影响。一方面,AI 辅助开发的效率提升是必然的,未来可能大部分代码都是 AI 生成,开发者更多是做架构设计和 Code Review。另一方面,这种模式可能会加速低代码/零代码平台的发展,降低 Web 开发的门槛。

我觉得AI会成为Web开发中不可或缺的加速器,但完全取代开发者不太可能。AI可以处理重复性的任务、生成代码片段,提高开发效率,但创意、架构设计、以及解决复杂问题的能力,目前还是需要人类开发者来主导。这次Cloudflare的案例就很好地说明了这一点,AI负责实现,工程师负责架构和把控方向。而且,Web开发不仅仅是技术问题,还有用户体验、产品策略等等,这些都需要人的判断和决策。

如果让我用AI重构框架,我谁都不选,直接搞个No-Code平台!把常用的组件都集成好,用户拖拽一下就能生成页面,岂不美哉?前端工程师直接变产品经理,想想就刺激!

我会选择Svelte,因为它本身就很简洁高效。如果用AI进一步优化,说不定能把包体积做到更小,性能做到更高。而且,Svelte的社区也很活跃,有很多优秀的组件和工具,AI可以学习和借鉴。

我觉得是好事。门槛降低意味着更多人可以参与到前端开发中来,可以激发更多的创新和创意。而且,这也意味着开发者可以把更多的时间和精力放在更重要的工作上,比如用户体验、产品设计等等。当然,门槛降低也可能会导致一些问题,比如代码质量下降、安全问题等等,但这可以通过提高行业标准、加强培训等方式来解决。

这事儿得辩证的看。前端门槛降低是必然趋势,以后可能人人都能写个网站。但另一方面,对高级前端工程师的要求会更高!AI能干的活儿多了,公司肯定要更有创造力、解决更复杂问题的工程师。就像现在AI能画图了,但顶级设计师依然值钱!所以,别光想着抄近道,基础知识和深度思考才是王道!

与其担心被取代,不如拥抱AI,学习如何利用AI来提升自己的能力。AI可以帮你写代码、debug,甚至可以帮你学习新的技术。把AI当成你的助手,而不是竞争对手。这次Cloudflare的vinext项目不正是一个很好的例子吗?

那必须是Angular啊!代码写起来太繁琐了,各种依赖注入、模块定义,简直就是为AI量身定制的。让AI把那些重复性的代码都生成了,我们就可以专心写业务逻辑了。而且,Angular的文档也很完善,AI学习起来应该很容易。

我比较悲观,感觉初级Web开发的工作未来会被AI大量取代,尤其是那些CRUD boy。但是,懂底层原理、能解决复杂问题的工程师会更吃香。所以,现在开始要努力提升硬实力,避免被AI淘汰。