跳至主要內容
KOH NEWS

出版第 345 號

今日電稿

以 Web Components 打造全棧框架 Gemkit 作者公開 RealWorld 對照數據:首屏 JS 25.9KB、SSR 吞吐與 SvelteKit 相當

科技 通訊社體 刊登 (台北時間) 閱讀約 3 分鐘

開發者在V2EX發布以Web Components為基礎的全棧框架Gemkit,稱首屏JS僅26KB、SSR吞吐與SvelteKit相當,並公開RealWorld對照數據。

一名署名 594mantou(mantou132)的開發者於 10 月 27 日在 V2EX「分享創造」版發文,公布其以 Web Components 為基礎的全棧應用框架 Gemkit,張貼至 28 日上午累積約 675 次瀏覽。作者同時公開了與 SvelteKit、Nuxt、Next.js 的自測對照數據與復現步驟,供外界檢驗。

專案脈絡:從純客戶端渲染到 SSR

依作者自述,其數年前曾在 V2EX 發布 Web Components 函式庫 Gem,長期限制是僅支援客戶端渲染(CSR),連配套的文件站產生器 gem-book 也是 CSR,「搜尋引擎基本收錄不到什麼東西」。

後續開發分三階段。作者先以 jsdom 製作原型,完成序列化(輸出 Declarative Shadow DOM)與水合(複用伺服器產出的 DOM 節點,而非重建)。第二步移除 jsdom,改為直接渲染成字串,以 Node.js 的 AsyncLocalStorage 做請求隔離並支援串流輸出,此即 gem-ssr。近期再參考 Next.js 與 SvelteKit 的設計,疊加應用層框架,成為 Gemkit。

框架形態與能力

程式碼範例顯示,Gemkit 採檔案路由,一個檔案即一個頁面,頁面元件繼承 GemElement,以裝飾器宣告資料載入與標題。僅在伺服器執行的程式碼放在同名的 .server.ts 檔案,可讀取 cookie、處理跳轉與表單 actions,且不會被打包進客戶端,作者形容此設計「用過 SvelteKit 的應該很熟悉」。

其餘能力包含:預設 SSG、可部署於靜態託管,必要頁面可改為按請求渲染並支援 ISR;@server() 元件僅在伺服器渲染,其程式碼與依賴不進入客戶端;@lazy() 元件在使用者互動時才載入水合。框架本體為 Rsbuild 外掛,並內建 Vercel、Netlify、Cloudflare 的部署適配。

自測數據:數字來自作者,尚未經第三方複核

作者以 RealWorld(Medium 克隆範例專案)分別用四個框架實作,使用同一後端與同一份資料對照。其公布的結果為:

框架首頁 JS (gzip)Lighthouse FCPSSR req/s
Gemkit25.9 KB1001382
SvelteKit44.0 KB1001437
Nuxt85.8 KB991042
Next.js103.5 KB96317

作者說明,SSR 吞吐方面 SvelteKit 略高,「兩個其實都快到後端的上限了」。測試程式碼、復現步驟與原始資料已放在 GitHub,並表示「覺得測得不對的歡迎指出來」。須注意上述數字均為作者自行量測,本臺未獨立驗證,亦未見第三方複核結果。

作者自列的限制

作者在文中主動列出不足之處:此為個人專案,版本仍在 0.x,未曾用於大型專案;客戶端導航目前是先變更 URL 再渲染新頁面,載入期間使用者會看到「新網址加舊頁面」,此行為日後會調整。

文件站與原始碼均已公開,並提供 npm create gemkit@latest 快速建立專案。作者另在 dev.to 撰寫英文長文記錄從純客戶端渲染走向 SSR 的完整開發過程。此類基準數據與功能宣稱,仍待更多開發者實際使用與獨立測試檢驗,相關討論目前僅限於原帖少量回覆。

標籤

#前端框架#webcomponents#開源專案

回到即時新聞