newsence

JavaScript 就夠了:Gea 輕量級響應式 UI 框架

Hacker News·15 天前

Gea 是一款高效能的編譯時 UI 框架,能將標準的 JavaScript 類別與函式轉換為精確的 DOM 更新,無需虛擬 DOM、Hooks 或 Signals。它號稱是目前最快的編譯式框架,並提供包含狀態管理、路由及 AI 整合在內的完整工具組。

背景

Gea 是一款標榜「JavaScript 就夠了」的輕量級反應式 UI 框架,強調透過編譯時技術實現精確的 DOM 更新,無需虛擬 DOM、Hooks 或 Signals 等新概念。開發者只需編寫標準的 JavaScript 類別與函式,即可獲得優於 Solid、Svelte 與 React 的效能表現,並內建了狀態管理、路由與 UI 組件庫。

社群觀點

Hacker News 社群對 Gea 的討論首先聚焦於其開發背景與真實性。由於專案初次亮相時看似僅有三天的開發紀錄,引發不少關於是否由 AI 生成的質疑。對此,作者 Armagan Amcalar 親自現身澄清,指出 Gea 並非橫空出世,而是基於他自 2017 年以來開發 erste.js 與 regie 等框架的技術積累,並經過六個月的封閉開發才正式開源。這種將多年經驗濃縮於單一初始提交的做法,雖然在版本控制上顯得有些特殊,但也解釋了為何版權聲明會追溯至 2017 年。

在技術核心理念上,社群展開了關於「原生感」與「新概念」的辯論。部分網友質疑 Gea 宣稱「零新概念」卻又引入 Store 與 Component 的說法存在矛盾,認為這與 Solid 等框架本質上並無二致。作者則回應,Gea 的核心在於將狀態管理回歸到純粹的 JavaScript 類別,利用 Proxy 封裝而非強迫開發者學習特定的 API 語法或處理複雜的依賴陣列。這種設計初衷是讓反應式行為在編譯階段自動完成,使開發者能以最符合語言直覺的方式撰寫程式碼。

然而,Gea 採用的「雙向 Props 綁定」引發了最激烈的爭議。許多資深開發者回想起 Angular 早期版本中雙向綁定帶來的維護噩夢,擔憂這會導致難以追蹤的副作用與「魯布·戈德堡機械」般的混亂邏輯。反對者認為,React 之所以成功,正是因為強制執行單向數據流與不可變性,這對於大型專案的穩定性至關重要。作者對此持不同見解,他認為 Gea 只是遵循 JavaScript 本身的語義:傳遞物件時為引用(雙向),傳遞原始型別時為值(單向)。他主張框架應貼合語言特性,而非人為施加限制,若開發者需要單向流,可以透過手動建立新物件來達成。

此外,社群對於 Gea 內建完整工具鏈(如路由、UI 組件、移動端原語)的做法表示興趣,認為這種「電池全包」的策略能減少開發者的決策疲勞。雖然有評論建議網站的復古視覺風格可能與「現代框架」的定位不符,但作者解釋這是刻意為之的審美選擇,象徵著「舊即是新」的技術輪迴。整體而言,社群對 Gea 的編譯技術與效能潛力抱持期待,但對於其回歸雙向綁定與類別導向的設計哲學,仍存有相當程度的保留與觀望。

延伸閱讀

  • erste.js:Gea 作者早期開發的 UI 框架,奠定了部分設計基礎。
  • regie:作者先前開發的反應式狀態管理庫。
  • js-framework-benchmark:Gea 用來證明其效能超越 Solid 與 Svelte 的標準基準測試工具。
  • Zag.js:Gea UI 組件庫所基於的底層狀態機邏輯庫。
https://geajs.com/