قضیه چیه؟
خیلی وقتها توی برنامهای که مینویسیم نیاز داریم یک رشته (String) رو، با استفاده از دادههایی که الان توی برنامه داریم، بسازیم و برگردونیم، یا حتی فقط چاپشون کنیم.
مثلا توی سایت جدیدتون، میخواید بعد از ورود به کاربرتون خوشآمد بگید، جوری که مثلا اگه کاربر اسمش کیوان بود بهش بگه سلام،کیوان.
نکته مهم اینه که این رشته قراره با اطلاعات اون لحظهی برنامه ساخته بشه (که مثلا توی یه متغیر ذخیره شدن).
حالت عادی چیکار میکردیم خب؟
مثلا توی C++
یه همچین حرکتی میکردیم:
توی زبانهای دیگه هم یه همچین کدی رو راحت میشه نوشت و خودتون بهتر از من بلدید.
این خوب نیست یعنی؟
نه، اصلا !
فرض کنید پیامی که قراره چاپ کنیم، به این سادگی نسیت، مثلا قراره بعد از خریدی که کاربر از ساییتون میکنه، بهش یک صفحهی فاکتور نشون بدید که توش اسم اقلام خریداری شده، تعدادشون، قیمتشون، جمع قیمت، تخفیف، نام خریدار و هزار تا چیز دیگه رو نشون بدید.
مشخصه که یه بخش هایی از این صفحهی فاکتور همیشه ثابته، میتونیم بگیم که صفحهی فاکتور یک قالب خاص داره که توش دادههای مشتری فعلیتون رو قرار میدید و بعد صفحه رو بهش نشون میدید.
خیلی وقتها، دادههایی که به کاربران نشان میدهیم از یک قالب مشخص پیروی میکنند.
واضحه که ساختن این صفحهی فاکتور با استفاده از استراتژی قبلی خیلی راحت نیست. به علاوهی این که کدی که به دست میاد خیلی خوانا نیست و در آینده هم برای تفییرش به احتمال زیاد به مشکل برمیخوریم.
یه ذره بهترش کنیم
برای کار رفع این مشکلات، همیشه ابزارهایی ساخته شدهاند که کار با قالبها رو برای توسعهدهندهها راحت کنند. حتی خیلی جاها توی خود زبانهای برنامه نویسی یه کارایی کردند برای این منظور:
|
|
|
|
Template Systems & Engines
نیازهای توسعهدهندهها معمولا بیشتر از اینهاست و برای همین Template System ها به وجود اومدند. از Template System های معروف و محبوب میشه به اینا اشاره کرد:
- Handlebars
- Mustache
- Dust (توسط LinkedIn)
- Nunchuks
- Pug (که قبلا اسمش Jade بود)
کاری که این سیستمها میکنن به صورت خلاصه اینه که شما با یه فرمت مشخص، یه قالب براشون تعریف میکنید و بعد هربار که نیاز داشتید، اطلاعاتتون رو به قالب تزریق میکنید، همه چیز خیلی راحت دقیقا همون جایی قرار میگیره که شما تعریف کردید.
این فالبها معمولا خوانا هستند و به کد شما پیچیدگی اضافه نمیکنن.
معمولا از کدهای Logic برنامه جدا هستن.
تغییرشون در آینده هم کار آسونیه.

سیبیلها در کد
Mustache
یکی از سرراست ترین و راحت ترین Templating System هاییه که تا حالا دیدم.
کافیه قالبتون رو هرجور که نیاز دارید طراحی کنید، هر جاییش که قراره از مقدار یک متغیر استفاده کنید، میتونید از {{ }}
استفاده کنید.
مثلا:
حتی خیلی راحت میتونید یه فاکتور HTML
درست کنید:
همونطور که توی کد بالا میبینید، میتونید با استفاده از همین سیبیلها، خیلی راحت حلقه داشته باشید و به ازای تک تک اقلام خریداری شده، یک سطر شامل نام و قیمتش رو توی فاکتور چاپ کنید.
اگه برای مثال من قالب بالا رو با اطلاعات سبد خرید کاربری با نام کیوان پر کنم، نتیجش میشه این:
|
|
توی مستنداتش میتونید بیشتر دربارش یاد بگیرید، برای خیلی از زبانها هم کتابخونه داره و استفاده ازش خیلی راحته:
صفحه اصلی وبسایت Mustache
مستندات
Handlebars
اینم هست، خیلی شبیه به Mustache ـه در ظاهر، ولی یه تفاوتایی داره
مهمترینش شاید اینه که برخلاف Mustache، هدفش این نیست که Logic-less باشه، برای همین مثلا یه سازوکارهایی برای چک کردن شرط داره.
لینکها
- اینجا میتونید به صورت آنلاین کار با Handlebars و Mustache رو آزمایش کنید.
- یک راهنمای ساده برای انتخاب Template Engine ( آپدیت نمیشه )
- صفحه اصلی وبسایت Mustache
- صفحه اصلی وبسایت Handlebars
