📋 محتويات الصفحة
📖 الوصف
Handlebars هو محرك قوالب يعتمد على وسيوس (Mustache) ولكنه يضيف ميزات إضافية مثل Helpers والمسارات المركبة. صُمم ليكون "بلا منطق" (Logic-less) - لا يمكنك تنفيذ كود تعسفي داخل القوالب، بل تستخدم Helpers للعمليات المعقدة. Handlebars يعمل على العميل (Browser) والخادم (Node.js, PHP, Java, وغيرها). يُستخ...
🎯 يستخدم في
مجالات استخدام هذه الأداة
بناء قوالب صفحات الويب (Rendering)
قوالب البريد الإلكتروني
توليد ملفات ثابتة (Static Files)
تخصيص محتوى ديناميكي
أنظمة CMS والمدونات
✨ المميزات
أبرز مميزات هذه الأداة
بسيط وسهل التعلم - syntax واضح
"Logic-less" - فصل منطق عن عرض
Helpers مخصصة للتخصيص
Works على العميل والخادم
جزئيات (Partials) لإعادة الاستخدام
آمنة - لا تنفيذ كود تعسفي
مجتمع كبير ومكتبات مساعدة
أداء جيد في القوالب المعقدة
⚠️ العيوب
نقاط يجب مراعاتها
"Logic-less" قد يكون محدوداً - لا شروط معقدة
Helpers قد تكون معقدة للكتابة
لا يملك وراثة قوية مثل Nunjucks/Pug
أخطاء في القوالب قد تكون غامضة
لا يدعم asynchronous helpers بسهولة
مسارات مركبة قد تكون مربكة
🔄 البدائل
أدوات بديلة يمكنك استخدامها
💻 مثال على الاستخدام
كيفية استخدام هذه الأداة
<!-- القالب -->
<div class="user-profile">
<h1>{{user.name}}</h1>
<p class="email">{{user.email}}</p>
<!-- التكرار -->
<ul class="skills">
{{#each user.skills}}
<li>{{this}}</li>
{{/each}}
</ul>
<!-- الشروط -->
{{#if user.isPremium}}
<span class="badge">عضو مميز</span>
{{else}}
<span class="badge">عضو عادي</span>
{{/if}}
<!-- Helpers -->
<p>{{formatDate user.createdAt "YYYY-MM-DD"}}</p>
<p>{{toUpperCase user.name}}</p>
<!-- Partials -->
{{> userCard user=activeUser class="highlighted"}}
<!-- مسارات مركبة -->
{{user.address.city}}
{{../company.name}}
</div>
<!-- Partials - ملف _userCard.hbs -->
<div class="user-card {{class}}">
<h3>{{user.name}}</h3>
<p>{{user.email}}</p>
</div>
<!-- JavaScript -->
<script>
// تسجيل Helpers
Handlebars.registerHelper('formatDate', function(date, format) {
return new Date(date).toLocaleDateString();
});
Handlebars.registerHelper('toUpperCase', function(str) {
return str.toUpperCase();
});
// استخدام القالب
const template = Handlebars.compile(document.querySelector('#template').innerHTML);
const html = template({
user: {
name: 'أحمد محمد',
email: 'ahmed@example.com',
isPremium: true,
skills: ['JavaScript', 'React', 'Node.js'],
address: { city: 'القاهرة' },
createdAt: '2024-01-15'
}
});
document.querySelector('#output').innerHTML = html;
</script>
📚 أدوات أخرى في HTML
قد يعجبك أيضاً
Alpine.js HTML
مكتبة JavaScript خفيفة للتفاعلات في HTML (Minimal JavaScript Framework)
Astro HTML
⭐إطار ويب لبناء مواقع محتوى سريعة (Content-focused Web Framework)
Emmet
⭐إضافة محرر لتوسيع الاختصارات (Editor Plugin for Abbreviation Expansion)
HTMX
مكتبة HTML لتفاعلات خادم-عميل بدون JavaScript (Hypermedia-Driven Library)
Markdown
⭐لغة ترميز خفيفة للنصوص (Lightweight Markup Language)
MDX
⭐Markdown مدمج مع JSX (Markdown + JSX Component System)