Pico: روتر فوقسبک برای Cloudflare Workers
خلاصهٔ کاملتر
Pico یه روتر بسیار سبکه که حجمش بعد از فشردهسازی به حدود ۴۰۰ بایت میرسه. این روتر از URLPattern — یه API استاندارد مرورگر/رانتایم برای تطبیق الگوهای URL — استفاده میکنه و روی Cloudflare Workers و Deno اجرا میشه. پروژه هنوز در مرحله آزمایشیه و ممکنه APIش در نسخههای بعدی تغییر کنه.
ساختار کار با Pico خیلی سادس؛ یه آبجکت روتر با تابع Pico() میسازی (بدون new) و بعد مسیرهای GET، POST یا هر متد دیگهای رو روش تعریف میکنی. هر هندلر یه آبجکت Response استاندارد برمیگردونه — همون چیزی که Cloudflare Workers و Deno نیتیوش رو پشتیبانی میکنن.
const router = Pico()
router.get('/', (c) => new Response('Hello Pico!'))
router.post('/entry/:id', ({ result }) => {
const { id } = result.pathname.groups
return Response.json({ 'your id is': id })
})در مثال بالا میبینی که پارامترهای مسیر (مثل :id) مستقیماً از result.pathname.groups قابل دسترسن. برای کیسهای پیچیدهتر، میشه توی تعریف مسیر از RegExp هم استفاده کرد؛ مثلاً /post/:date(\d+)/:title([a-z]+) فقط عددها رو برای تاریخ و حروف کوچیک رو برای عنوان قبول میکنه.
علاوه بر پارامترهای مسیر، دسترسی به query string، متغیرهای محیطی Cloudflare (مثل env.TOKEN)، و executionContext هم مستقیم از همون آرگومان هندلر ممکنه. همچنین با router.on('PURGE', ...) میشه متدهای HTTP غیراستاندارد رو هم هندل کرد.
استفاده از Pico روی Deno هم به همین سادگیه؛ روتر رو میسازی و router.fetch رو به تابع serve دنو پاس میدی. برای دپلوی روی Cloudflare Workers هم فقط کافیه روتر رو بهعنوان export default اکسپورت کنی.
نکات کلیدی:
- حجم فشردهشده: ~۴۰۰ بایت
- بر پایه URLPattern — API استاندارد برای تطبیق الگوی URL
- پشتیبانی از Cloudflare Workers و Deno
- امکان استفاده از RegExp در تعریف مسیرها
- دسترسی به env، executionContext و query params از هندلر
- پروژه هنوز تجربیه و API ممکنه تغییر کنه




