زمانی که شما فقط نیاز به ساخت یک برنامه دسکتاپ کوچک دارید: TinyJS
چگونه یک زمان اجرا میکرو جاوا اسکریپت از وبنماهای بومی سیستمعامل برای کاهش ردپای دسکتاپ استفاده میکند.
در حالی که میلیاردرهای جهان با نگرانی دیتاسنترهایی را طراحی می کنند تا تریلیون ها خط کد slop تولید شده توسط هوش مصنوعی را اجرا کنند، یک مهندس نرم افزار در مسیری کاملا متفاوت حرکت کرده است: ساخت اکوسیستمی برای نوشتن و اجرای برنامه های کوچکی که بر روی رایانه های رومیزی اجرا می شوند، مانند سال 1992. Tarwin Stroh-Spijer که خود را «سازنده چیزها» توصیف می کند، یک زمان اجرا جاوا اسکریپت به نام TinyJS برای ساخت برنامه های بسیار کوچک (بسیاری از آنها حدود 6 مگابایت یا کمتر روی دیسک اشغال می کنند) برای macOS، Linux یا Windows ایجاد کرده است. برای روشن بودن، TinyJS یک چارچوب «بدون کد» با قابلیتهای کوچک نیست.
قدرت برنامه نویسی کامل جاوا اسکریپت را به همراه رندر بصری و قابلیت های ارتباطی سیستم عامل اصلی ارائه می دهد. ترفند صرفهجویی TinyJS این است که از پنجره WebView هر سیستمعامل استفاده میکند و از موتور مرورگر داخلی برای نمایش بصری برنامه استفاده میکند، به جای پیادهسازی یک لایه UI از ابتدا. از WebKit برای اجرای برنامه ها به این روش در macOS، WebView2 برای ویندوز و WebKitGTK برای لینوکس استفاده می کند. رویکرد TinyJS کاملا متفاوت از استفاده از چارچوب Electron است که یک هسته مرورگر منبع باز Chromium را با هر برنامه دسکتاپ بسته بندی می کند.
اما در حالی که Electron ظاهر و ظاهر یک برنامه را در تمام پلتفرمها وعده میدهد، برنامههای TinyJS به دلیل تفاوتهای جزئی در نحوه عملکرد موتور رندر هر سیستمعامل، هنگام اجرا بر روی پلتفرمهای مختلف، تغییرات بصری جزئی خواهند داشت. برنامه Electron هزینه این یکنواختی بین پلتفرم را پرداخت می کند: با Electron، حتی ابتدایی ترین برنامه می تواند 150 مگابایت وزن داشته باشد. Rust همیشه جواب نمی دهد هسته TinyJS txiki.js است، یک زمان اجرا جاوا اسکریپ بسیار فشرده که توسط Saúl Ibarra Corretgé نوشته شده است که Deno و Bun را شبیه به غول پیکر می کند.
بسته شروع حدود 5.6 مگابایت است و لانچر یک مگابایت دیگر یا بیشتر اشغال می کند. بقیه بسته ها اساسا همه کد توسعه دهنده هستند. Stroh-Spijer همچنین فرآیند توسعه را با استفاده از مکانیسمهای ارتباطی بین فرآیندی سیستمعامل برای مدیریت انتقال داده، سادهسازی کرد، و نیاز به بستهبندی یک سرور HTTP برای هر برنامه، همراه با تمام سردردهای امنیتی را که به همراه داشت، از بین برد. تمام کدنویسی در TinyJS در جاوا اسکریپت، CSS و HTML انجام می شود – بدون نیاز به کامپایل. در اینجا فضای زیادی برای خلاقیت وجود دارد، زیرا قابلیتهای طراحی وب اخیرا با سرعت زیادی در حال رشد بوده است.
Stroh-Spijer در وب سایت TinyJS اشاره کرد که پروژه Tauri هدف مشابهی از ایجاد برنامه های کوچک دارد و می تواند یک برنامه دسکتاپ را با حجم 10 مگابایت ارائه دهد، اما این چارچوب دارای اشکالاتی است. نکته اصلی این است که شما باید برنامه های کاربردی را در Rust بنویسید – که در کنار سایر اشکالات، مستلزم یادگیری Rust است. همچنین، TinyJS بسیاری از زیرلایههای برنامه را به سیستم عامل میدهد - مانند دیالوگها، منوها، سینی، کلیپبورد، بهروزرسانیهای خودکار - که با Tauri باید هر بار یک افزونه وارد شود.
توسعهدهندگان به Node.js بهعنوان یک وابستگی در اینجا نیازی ندارند، مگر اینکه بخواهند چارچوبی را اجرا کنند که به آن نیاز دارد، مانند Vite. همچنین می تواند از دیگر فریم ورک های جاوا اسکریپت مانند React، Vue و Svelte پشتیبانی کند. یا می تواند بدون وابستگی اجرا شود. شما همچنین می توانید از TinyJS برای بسته بندی یک صفحه وب، با اشاره پنجره به یک URL استفاده کنید. تصور کنید سایت مورد علاقه خود را به عنوان یک برنامه روی دسکتاپ خود دارید. قفسه ای از برنامه های کوچک با TinyJS، Stroh-Spijer یک "فروشگاه برنامه" ایجاد کرد که می تواند از روی دسکتاپ اجرا شود (نسخه زیپ شده ویندوز را می توانید از اینجا دانلود کنید).
در زمان انتشار، 25 برنامه نمونه را که او نوشت ایندکس می کند. برنامههای نمونه، همگی رایگان، از نظر کاربردی و هوسبازی متفاوت هستند. این قفسه شامل یک ساعت جهانی (که به عنوان یک فایل فشرده 3.8 مگابایتی ارسال می شود)، یک برنامه تاریخچه کلیپ بورد (3.7 مگابایت)، یک ویرایشگر نشانه گذاری (4.9 مگابایت)، یک شبح دسکتاپ (3.8 مگابایت)، یک مرورگر SQLite (4.1 مگابایت) و از همه چشمگیرتر، یک کلون از نماد نمادین Winamp از پخش کننده موسیقی شماست. هنگامی که Windows Defender را متقاعد کردید که به راهانداز اعتماد کند، میتوانید برنامه مورد نظر خود را مستقیما از قفسه دانلود و باز کنید.
در آزمایشهای من، برنامه کپی و چسباندن، که به وضوح برای کلیدهای میانبر مک نوشته شده بود، هنوز برای ویندوز خیلی باگ بود، اگرچه ساعت جهانی به خوبی اجرا میشد و تنها 15.5 مگابایت رم روی جعبه من مصرف میکرد. (Caveat Emptor: راهانداز هش را بررسی میکند تا از اعتبار برنامههای دانلود شده اطمینان حاصل کند، اگرچه شما اطمینان دارید که Stroh-Spijer در اینجا قصد شیطانی ندارد). یا، فقط از مثال ها رد شوید و برنامه های آزمایشی خود را بسازید. رایانههای شخصی امروزی قدرتمند هستند، اما هنوز دلایل خوبی برای ساختن برنامههایی وجود دارد که حتی با استانداردهای قرن گذشته کوچک هستند.
برنامههای تجاری (آنهایی که هنوز در دسترس هستند) و مرورگرهای وب، مصرفکنندگان رم حریص هستند، بنابراین افزودن ابزارهای بیشتر به دسکتاپ با سربار کمی مثبت است. بعلاوه، برخلاف برنامههای متورم، برنامههای کوچک سریع شروع میشوند و در تئوری، انرژی کمتری را روی لپتاپها مصرف میکنند. و درست مانند میم TikTok زنی که اصرار دارد سگش را به هواپیما بیاورد زیرا فقط "یک سگ کوچک" است، کاربران ممکن است بخواهند این برنامه ها را به دسکتاپ خود اضافه کنند، زیرا، خوب، آنها کوچک هستند. ®
متن اصلی (انگلیسی)
When you just need to build a tiny desktop app: TinyJS
How a micro JavaScript runtime uses native OS webviews to shrink the desktop footprint.