ونتو: موتور قالب جدید برای جاوااسکریپت
خلاصهٔ کاملتر
نویسنده که خالق ونتوئه میگه هیچکدوم از موتورهای قالب موجود جاوااسکریپت دقیقاً نیازهاش رو پوشش نمیدادن، برای همین ونتو رو ساخته؛ اسمی که تو زبان گالیسی یعنی «باد». بزرگترین فرقش با بقیه اینه که کل منطق قالبها با خود جاوااسکریپت نوشته میشه، نه یه زبان اختصاصی مثل فیلترهای Liquid یا تگهای Nunjucks؛ یعنی برای حروف بزرگ کردن یه رشته کافیه از همون toUpperCase() جاوااسکریپت استفاده کنی.
به گفتهٔ نویسنده، ونتو با یه الگوریتم تشخیص دقیق مرزهای کد تونسته پشتیبانی خوبی از کدهای جاوااسکریپت تو دل قالب داشته باشه (مثلاً وقتی خود رشتهٔ }} هم داخل کد باشه)، بدون اینکه سرعت کامپایل و رندر رو فدا کنه. یه ویژگی مهم دیگهش اینه که async-friendly ـه: چون قالبها مستقیم به تابع جاوااسکریپت تبدیل میشن، میتونی همهجا از await استفاده کنی، برخلاف Nunjucks که برای مقادیر sync و async تگهای جدا داره.
تو سینتکس ونتو همهچیز بین {{ و }} قرار میگیره و برخلاف Nunjucks یا Liquid فرقی بین تگ و چاپ متغیر نیست؛ برای بستن تگها هم کافیه یه / جلوش بذاری:
{{ if printName }}
<h1>{{ (await getUser(34)).name |> toUpperCase }}</h1>
{{ /if }}اینجا هم از await مستقیم تو تگ استفاده شده، هم فیلتر toUpperCase با عملگر پایپ (|>) روی نتیجه اعمال شده؛ چیزی که نشون میده چطور جاوااسکریپت خام و تگهای اختصاصی تو ونتو کنار هم کار میکنن.
نویسنده تو مقاله چندتا موتور رقیب رو هم نقد میکنه: Nunjucks رو بهخاطر توقف توسعه (آخرین نسخهش ژوئن ۲۰۲۲ بوده) و ناقص بودن پشتیبانی async مشکلدار میدونه؛ Liquid رو بهخاطر اینکه نمیشه مستقیم تابع صدا زد؛ و Mustache رو بهخاطر سادگی بیشازحد و context گیجکنندهش نقد میکنه. دلیل مشترک همهشون هم استفاده از کاراکتر % تو دیلیمیترهاست که نویسنده میگه براش ناراحتکننده بوده.
نکات کلیدی:
- ونتو یه موتور قالب جاوااسکریپتیه که منطقش رو مستقیم با جاوااسکریپت خود زبان مینویسی، نه سینتکس اختصاصی
- از یه الگوریتم دقیق تشخیص مرز کد استفاده میکنه تا کدهای پیچیدهتر جاوااسکریپت رو درست پردازش کنه
- کاملاً async-friendly ـه و همهجای قالب میشه از await استفاده کرد
- تگها با {{ }} نوشته و با / (مثل {{ /if }}) بسته میشن، برخلاف {% endfor %} تو Nunjucks
- نویسنده Nunjucks رو بهخاطر توقف توسعه از ۲۰۲۲ و ناقص بودن پشتیبانی async نقد میکنه




