tinyjs، جایگزین سبک الکترون
خلاصهٔ کاملتر
tinyjs یه فریمورک ساخت اپلیکیشن دسکتاپه که ادعاش سادهست: اپی که با HTML و CSS و JS معمولی نوشتی، حدود ۶ مگابایت روی مک و ویندوز و لینوکس در میاد. تو معرفی پروژه اومده که همین اپ با الکترون بالای ۱۵۰ مگابایت و با Tauri حدود ۱۰ مگابایت در میاد. دلیلش اینه که هیچ مرورگری باندل نمیشه و از وبویو خود سیستمعامل استفاده میشه: WebKit روی مک، WebView2 روی ویندوز و WebKitGTK روی لینوکس.
بکاند اپ روی txiki.js میچرخه، یه رانتایم جاوااسکریپت ۵.۶ مگابایتی که روی QuickJS و libuv ساخته شده و fetch و WebSocket و sqlite و FFI و کار با فایل و پروسه رو داره. ارتباط صفحه با بکاند هم از روی یه Unix socket تو یه پوشهٔ موقت خصوصی انجام میشه، نه پورت شبکه. یعنی هیچ پورتی باز نمیمونه که با اپ دیگه تداخل کنه یا کسی بتونه اسکنش کنه.
فرق اصلیش با Tauri به گفتهٔ سازنده دوتاست: بکاند به جای Rust جاوااسکریپته، پس نه مرحلهٔ کامپایل داری نه زبون دوم تو پروژه؛ و امکاناتی مثل دیالوگ، منو، tray، کلیپبورد، keychain، نوتیفیکیشن، هاتکی سراسری و آپدیت خودکار همه بخشی از خود API هستن، نه پلاگینهایی که دونهدونه اضافه کنی. صدا زدن اینها از توی صفحه هم همینقدر مستقیمه:
await tiny.api.call('hello', { name });
await tiny.dialog.openFile();بخش پرسشهای سایت صادقانه گفته کجا ابزار دیگه جواب بهتری میده. ظاهر اپ روی هر سه پلتفرم یکسان نیست، چون موتور رندر مال خود سیستمعامله و همون تفاوتهای همیشگی Safari و Chrome رو داری. از مک نمیتونی بیلد ویندوز بگیری و باید روی همون سیستمعاملی بیلد کنی که براش منتشر میکنی. موبایل هم اصلاً پشتیبانی نمیشه. مکاواس پلتفرم اصلی و پایداره، ولی ویندوز و لینوکس هنوز بتان. نویسنده میگه اگه Rust تو استکت میخوای یا موبایل لازم داری، برو سراغ Tauri.
اگه با فریمورک کار میکنی، دستور tinyjs new myapp --template react-ts یه پروژهٔ Vite وصلشده میسازه و vue و svelte و solid هم تمپلیت دارن؛ ولی تمپلیت پیشفرض عمداً هیچ وابستگیای نداره و اصلاً build step نمیخواد. یه حالت جالب دیگه هم داره: پنجره رو به آدرس یه سایت آنلاین وصل میکنی و مثل مرورگر رفتار میکنه، و یه capability gate تو tinyjs.json تعیین میکنه اون origin اجازهٔ صدا زدن کدوم بخش از API بومی رو داره.
نکات کلیدی:
- اپ خروجی حدود ۶ مگابایته: ۵.۶ مگ خود txiki.js و حدود ۳۸۰ کیلوبایت لانچری که پنجره رو مدیریت میکنه
- مقایسهٔ حجم: الکترون بالای ۱۵۰ مگ، Tauri حدود ۱۰ مگ، Neutralino حدود ۳ مگ ولی روی websocket لوکال
- ارتباط صفحه و بکاند روی Unix socket تو پوشهٔ موقت با دسترسی 0700، بدون هیچ پورت باز
- مکاواس پایدار، ویندوز و لینوکس بتا، لایسنس MIT
- بیلد کراسپلتفرم نداره: برای هر سیستمعامل باید روی خود همون سیستم بیلد بگیری




