Cloudflare最近发布了vinext,这是一个基于Vite而非Turbopack重新实现的Next.js实验性项目。这个项目由一名工程师在大约一周的时间内利用人工智能技术完成开发,期间花费了1,100美元用于购买API令牌。Cloudflare将vinext宣传为专为Cloudflare Workers优化过的替代方案,但同时也明确指出该项目仍处于实验阶段,尚未经过大规模测试。

初步的测试结果看起来相当不错,但也存在一些需要注意的地方。在包含33个路由的测试应用中,使用Vite 8的Rolldown打包工具进行生产环境构建所需时间为1.67秒,而使用Next.js 16与Turbopack组合则需要7.38秒,前者速度是后者的4.4倍。此外,客户端代码包的大小也从168.9 KB压缩到了72.9 KB,减少了57%。不过Cloudflare提醒称,这些数据仅具有参考意义,并非最终结果,因为它们是基于单一测试场景得出的,并不适用于现实世界中的生产环境。

(来源:Cloudflare的博客文章

负责该项目开发的Cloudflare工程师Steve Faulkner在博客文章中详细描述了开发过程:最初几小时使用OpenCode工具与Claude一起定义系统架构,随后通过人工智能生成代码实现及测试用例。当测试通过后,这些代码就会被合并到项目中;如果测试失败,人工智能会接收错误信息并重新进行迭代。最终,超过800次人工智能辅助的开发过程产生了项目中的大部分代码,但所有代码都经过了严格的质量检测,包括1,700多次Vitest测试、从Next.js原有测试套件中移植过来的380次Playwright端到端测试,以及TypeScript类型检查和代码格式化检查。

vinext实现了Next.js的API接口、路由机制、服务器端渲染功能、React Server Components组件、服务器端操作逻辑以及缓存机制,但它是以Vite插件的形式实现的,而非直接包装Next.js的输出结果。因此,任何支持Vite环境API的平台都可以运行vinext,不过Cloudflare Workers才是它的主要部署目标。该公司声称,其代码库中约有95%的内容都是与具体平台无关的通用Vite代码。

要将vinext部署到Cloudflare Workers环境中,只需执行一条命令:`vinext deploy`。无论是App Router还是Pages Router,都能支持完整的客户端代码渲染功能。在缓存方面,vinext提供了专门用于ISR(增量式静态资源生成)机制的KV缓存处理程序。目前已有许多实际应用案例,例如App Router测试平台Hacker News克隆版本,以及由National Design Studio负责维护的美国政府测试网站CIO.gov

一个重要的限制是:vinext目前还不支持在构建阶段进行静态预渲染。Next.js会在每次构建时使用`generateStaticParams()`函数来预渲染页面,而vinext仅支持在收到首次请求后对相关页面进行缓存及重新验证。静态预渲染功能目前已被列入开发计划中 Cloudflare提出了一种名为“基于流量检测的预渲染”(Traffic-aware Pre-Rendering,简称TPR)的替代方案,但目前这一技术仍处于实验阶段。TPR会在部署时查询Cloudflare的区域分析数据,仅对那些实际会收到流量的页面进行预渲染。对于一个拥有10万篇产品页面的网站来说,如果其中90%的流量集中在50到200页这些页面上,那么这些页面就会被预先渲染;而其余页面则仍会采用按需生成的静态渲染方式。不过,这种方案仅适用于那些已经接入Cloudflare网络并且具备相关分析数据的网站。 社区对这一技术的反应不仅涉及其实现质量,还包含其他方面的担忧。在Reddit的r/vibecoding论坛上,开发者们对这项技术的可维护性提出了质疑。有评论者指出:“Cloudflare声称人工智能不需要中间抽象层,因为‘它能够完全理解整个系统的逻辑’,但这一说法实际上等于承认这些代码人类根本无法维护。”还有人进一步强调:
说这个技术只用了一周时间就开发完成,其实意味着根本没有人真正仔细研究过这些代码。
Hacker News上的评论也表达了类似的怀疑态度。有评论者指出了文档编写方面存在的问题:
你把代码文档写得越详细,定义的规则越严格,别人就越容易复制你的代码。如果没有Next.js自身的测试框架,Cloudflare根本不可能完成这项工作。
还有人指出,实际上Vite才是这个项目真正起关键作用的技术:
vinext中有大约95%的部分都是使用Vite技术实现的,”有评论者写道,“真正的成就在于这些代码是由人类编写的。”
这个项目仍处于实验阶段,这一点需要特别注意。正如Cloudflare在博客中指出的:
vinext目前还处于测试阶段。它才诞生不到一周的时间,也还没有在实际环境中接受过大规模流量的测试。如果你正在考虑将它用于生产环境,请务必谨慎行事。
README文件中明确列出了目前还不支持的功能以及已知的限制之处。Cloudflare正在与其他托管服务提供商合作,推动这一技术链的普及;他们仅用不到30分钟就成功在Vercel平台上部署了一个概念验证版本,但这个项目的长期可行性仍然存在不确定性。 对于有兴趣进行测试的开发者来说,vinext提供了一些迁移工具。例如,可以使用`npx skills add cloudflare/vinext`命令来安装相应的迁移插件;或者直接使用`npx vinext init`命令来进行手动迁移操作。
Comments are closed.