Gea؛ فریمورک UI که خودشو کامپایل میکنه
خلاصهٔ کاملتر
سازندهٔ Gea این فریمورک رو کامپایلر-محور معرفی میکنه: بهجای اینکه یه سری مفهوم تازه یاد بگیری، همون کلاسها و توابع معمولی JavaScript رو مینویسی و کامپایلر موقع build اونها رو به آپدیتهای دقیق و مستقیم DOM تبدیل میکنه. نه virtual DOM، نه hook، نه signal.
ایدهٔ اصلی «صفر مفهوم» جدیده. store یه کلاسه، کامپوننت یه کلاس یا تابعه و مقدار computed هم یه get معمولیه. پلاگین Vite موقع build همون JSX رو تحلیل میکنه، میفهمه کدوم node از DOM به کدوم state وابستهست و patchهای دقیق رو بهصورت نامرئی سیمکشی میکنه.
import { Store } from '@geajs/core'
class CounterStore extends Store {
count = 0
increment() { this.count++ }
decrement() { this.count-- }
}
export default new CounterStore()state توی کلاسهای معمولی زندگی میکنه که با یه Proxy عمیق پیچیده شدن؛ پس مستقیم میتونی property رو تغییر بدی و متدهای آرایه و آبجکتهای تودرتو هم همونطور که انتظار داری کار میکنن. متدهایی مثل push و splice و sort هم رویدادهای تغییر ریزدانه (append، reorder، swap) تولید میکنن، نه rerender کامل.
روی بحث performance، سازنده روی سبکی تأکید میکنه. طبق ادعای صفحه، تو یه build تولیدیِ hello world با Vite، خروجی Gea فقط ۱۲۱ بایت JavaScript فشرده با brotliه، در حالی که Solid حدود ۳.۶، Svelte ۸.۵، Vue ۲۰.۷ و React حدود ۵۰.۸ کیلوبایت میفرستن. تو بنچمارک js-framework-benchmark هم امتیاز ۱.۰۲ گرفته که خیلی نزدیک به vanilla JavaScriptه.
Gea یه جعبهابزار کامل هم داره: router سمت کلاینت توکار، بیش از ۳۵ کامپوننت UI دسترسپذیر بر پایهٔ Zag.js، primitiveهای موبایل، افزونهٔ VS Code و یه scaffolder پروژه. با یه دستور npm create gea@latest هم یه پروژهٔ Vite با TypeScript و store و کامپوننت و پلاگین آماده تحویلت میده.
نکات کلیدی:
- Gea کامپایلر-محوره و کلاس/تابع معمولی JS رو موقع build به آپدیت مستقیم DOM تبدیل میکنه.
- نه virtual DOM، نه hook، نه signal؛ store کلاسه و computed یه getter سادهست.
- state با Proxy عمیق پیچیده شده و آرایهها تغییرات ریزدانه تولید میکنن.
- ادعای ۱۲۱ بایت JS تو hello world و امتیاز ۱.۰۲ تو js-framework-benchmark.
- جعبهابزار کامل: router، ۳۵+ کامپوننت روی Zag.js، افزونهٔ VS Code و scaffolder.




