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.