📋 محتويات الصفحة
📖 الوصف
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)
Alpine.js HTML
مكتبة JavaScript خفيفة للتفاعلات في HTML (Minimal JavaScript Framework)
Astro HTML
⭐إطار ويب لبناء مواقع محتوى سريعة (Content-focused Web Framework)
Astro HTML
⭐إطار ويب لبناء مواقع محتوى سريعة (Content-focused Web Framework)
Emmet
⭐إضافة محرر لتوسيع الاختصارات (Editor Plugin for Abbreviation Expansion)
Emmet
⭐إضافة محرر لتوسيع الاختصارات (Editor Plugin for Abbreviation Expansion)