وسپ: تعریف اپ فولاستک با تایپاسکریپت
خلاصهٔ کاملتر
وسپ یه فریمورک فولاستک و «باتریهمراه» برای جاوااسکریپت و تایپاسکریپته؛ چیزی تو مایههای ریلز و لاراول و جنگو، ولی از نو برای جاوااسکریپت مدرن بازطراحی شده. ایدهی مرکزیش «اسپک» (specification)ه: یه لایهای که کل اپ رو در سطح بالا تعریف میکنی و بعد پیادهسازیش رو با React و Node و Prisma انجام میدی. توی این پست، تیم وسپ اعلام کرده بزرگترین تغییر پروژه رو انجام داده و روش نوشتن این اسپک رو عوض کرده.
تا حالا این لایهی اسپک یه زبان اختصاصی (DSL) با کامپایلر و ابزار مخصوص خودش بود. به گفتهی تیم وسپ، ساختن یه زبان جدید در عمل بیشتر از فایدهش دردسر داشت و جلوی رشد وسپ رو میگرفت، برای همین به درخواست خود کاربرا کنارش گذاشتن و رفتن سراغ اسپک تو تایپاسکریپت.
حالا اسپک رو توی فایلهای *.wasp.ts مینویسی و با ساختن یه آبجکت app اپت رو تعریف میکنی. سازندههایی مثل page، route، query، job و api از پکیج @wasp.sh/spec میان و نقش «واژگان» تو رو دارن که باهاشون بخشهای مختلف اپ رو مشخص میکنی و بعد همه رو تو یه آبجکت app کنار هم میذاری:
import { app, page, route } from "@wasp.sh/spec";
import { MainPage } from "./src/MainPage" with { type: "ref" };
export default app({
title: "ToDo App",
spec: [route("RootRoute", "/", page(MainPage, { authRequired: true }))],
});نکتهی اصلی اینه که وقتی داری اسپک مینویسی، در واقع فقط تایپاسکریپت مینویسی؛ برای همین دستت خیلی بازتره. میتونی از کتابخونههای third-party استفاده کنی، اسپک رو بین چند فایل بشکنی، توابع کمکی و حلقه بنویسی، از روی دیسک بخونی یا متغیرهای محیطی رو چک کنی. تنها چیزی که وسپ ازت میخواد اینه که یه آبجکت app از فایل main.wasp.ts اکسپورت کنی.
بعد وسپ اسپک و بقیهی کدت (React، Node و schema.prisma) رو میگیره و یه اپ فولاستک کامل ازش میسازه. مثلاً تو همون نمونه، اپ بهصورت آماده احراز هویت فولاستک (گوگل، گیتهاب یا ایمیل و پسورد) داره، کامپوننت صفحهی اصلی رو روی مسیر / سوار میکنه و توابع سمت سرور رو از راه RPC برای کلاینت قابلفراخوانی میکنه. به گفتهی تیم وسپ، شباهت با نسخهی قبلی همینجا تموم میشه و از اینجا امکانات تازه شروع میشه.
نکات کلیدی:
- وسپ زبان اختصاصی و کامپایلر جداگانهش رو کنار گذاشت و اسپک رو به تایپاسکریپت منتقل کرد.
- اسپک رو تو فایلهای *.wasp.ts و با ساختن آبجکت app از پکیج @wasp.sh/spec مینویسی.
- چون خروجی تایپاسکریپت خالصه، از کتابخونه، حلقه، توابع کمکی و چندتیکهشدن اسپک خبری از محدودیت زبان DSL نیست.
- وسپ اسپک رو کنار کد React/Node/Prisma میذاره و یه اپ فولاستک کامل میسازه.




