Topcoat؛ فریمورک فولاستک برای Rust
خلاصهٔ کاملتر
تیم Tokio از Topcoat رونمایی کرده: یه فریمورک فولاستک ماژولار و «باتریهمراه» برای ساخت اپلیکیشن با Rust که ادعاش سادگی و بهرهوریه. خودشون تو صفحهٔ اول شفاف نوشتن که پروژه مرحلهٔ اولیه و آزمایشی رو میگذرونه و باید انتظار تغییرات شکننده رو داشت.
مدل پایه اینه که همهٔ مارکآپ سمت سرور رندر میشه. کامپوننتها میتونن توابع async باشن و مستقیم دیتابیس رو کوئری بزنن، و همین کل بویلرپلیت مرسوم برای یه لایهٔ API جداگونه رو حذف میکنه. ساختار یه صفحه هم با ماکروهای اتریبیوتی مشخص میشه:
#[component]
async fn hello(name: &str) -> Result {
view! { <h1>"Hello, " (name) "!"</h1> }
}جذابترین بخش ماجرا بخش تعاملیشه. یه عبارت که با علامت دلار علامتگذاری میشه، Rust معمولی و تایپچکشدهست: Topcoat برای رندر اولیه اونو سمت سرور اجرا میکنه و همزمان به جاوااسکریپت ترجمهش میکنه تا تو مرورگر فوری دوباره اجرا بشه. نتیجهش تعامل بدون رفتوبرگشت به سرور، بدون باندل wasm و بدون مرحلهٔ بیلد سمت کلاینته. سیگنالها هم همونجا داخل قالب تعریف میشن.
وقتی واقعاً به سرور نیاز داری — مثلاً نتایج تازهٔ جستوجو — کامپوننت رو با ماکرو shard علامت میزنی. هر بار که آرگومانهای پویاش عوض بشن، Topcoat همون تکه رو سمت سرور دوباره رندر میکنه و HTML جدید رو سر جاش میذاره. یعنی یه طیف تدریجی داری: از تعامل کاملاً مرورگری تا بهروزرسانی سروری، بدون عوض کردن زبان.
ماکرو قالب هم عمداً به HTML و Rust وفادار مونده؛ میتونی کنترل فلوی خود Rust مثل حلقه رو داخل قالب بنویسی. کنار اون یه ماکرو برای اتریبیوتهای قابل استفادهٔ مجدد و یکی برای ساختن لیست کلاسها از ورودیهای ثابت و شرطی وجود داره.
سیستم داراییها یکی از بخشهای پختهتره: باندلر باینری کامپایلشده رو اسکن میکنه، هر فایلی که اعلام شده رو کپی (یا حتی دانلود) میکنه و با URL هشدار و کش تهاجمی مرورگر سرو میکنه. برای فونتهای وب و آیکونها هم ابزار داره، با اتصال آماده به Fontsource و Iconify. Tailwind هم بدون نیاز به Node و از طریق یه فیچر داخلی به پایپلاین وصل میشه.
نقشهٔ راه نشون میده چقدر کار باقی مونده: دستور ساخت پروژهٔ آماده، خروجی استاتیک، پیشرندر صفحات، رندر جریانی سمت سرور، ناوبری سمت کلاینت، وبسوکت، رویدادهای سمت سرور، احراز هویت، اعتبارسنجی، کارهای پسزمینه و بهینهسازی تصویر همه هنوز تو صفان.
نکات کلیدی:
- فریمورک فولاستک Rust از تیم Tokio، فعلاً آزمایشی و با تغییرات شکننده
- رندر کامل سمت سرور و کامپوننتهای async که مستقیم به دیتابیس وصل میشن
- تعامل مرورگر بدون wasm و بدون بیلد کلاینت، از راه ترجمهٔ عبارتهای Rust به جاوااسکریپت
- کامپوننتهای shard فقط همون تکه رو سمت سرور دوباره رندر میکنن
- باندلر داراییها، پشتیبانی داخلی Tailwind بدون Node و اتصال به htmx




