📋 محتويات الصفحة
📖 الوصف
HTMX هي مكتبة خفيفة (14KB) تسمح لك بالوصول إلى AJAX, CSS Transitions, WebSockets, وServer-Sent Events مباشرة من HTML. بدلاً من كتابة JavaScript لجلب وتحديث المحتوى، تضيف attributes خاصة لـHTML. HTMX تعيد فكرة "Hypermedia" - الخادم يرسل HTML والعميل يعرضه. لا JSON، لا Framework - فقط HTML attributes...
🎯 يستخدم في
مجالات استخدام هذه الأداة
بناء واجهات تفاعلية بدون JavaScript
تطبيقات CRUD بسيطة
تحديث أجزاء من الصفحة ديناميكياً
نماذج (Forms) مع تحسين UX
تطبيقات Real-time (WebSockets)
تقليل الاعتماد على JavaScript في Frontend
✨ المميزات
أبرز مميزات هذه الأداة
خفيفة جداً (14KB minified+gzipped)
لا يحتاج build step - فقط include
تعمل مع أي لغة خادم
HTML attributes - بسيطة وواضحة
دعم AJAX
WebSockets
SSE
CSS Transitions مدمجة
لا JSON - فقط HTML
History Management مدمج
طلبات متعددة على عنصر واحد
أمان عالي - لا eval
لا arbitrary code
⚠️ العيوب
نقاط يجب مراعاتها
محدود - ليس لكل حالات الاستخدام
يتطلب خادم خاص (HTML fragments)
لا يناسب SPA معقدة
Debugging أصعب من JavaScript
مجتمع أصغر - موارد أقل
بعض العمليات تحتاج JavaScript (animations معقدة)
ليس بديلاً كاملاً لـReact/Vue
🔄 البدائل
أدوات بديلة يمكنك استخدامها
💻 مثال على الاستخدام
كيفية استخدام هذه الأداة
<!-- تحميل ملف HTMX -->
<script src="https://unpkg.com/htmx.org@1.9.10"></script>
<!-- مثال 1: زر يجلب محتوى من الخادم -->
<button hx-get="/api/message" hx-target="#result" hx-swap="innerHTML">
جلب رسالة
</button>
<div id="result"></div>
<!-- مثال 2: نموذج يرسل بيانات ويحدث الجدول -->
<form hx-post="/users"
hx-target="#user-list"
hx-swap="beforeend"
hx-indicator=".spinner">
<input name="name" placeholder="الاسم" required>
<input name="email" type="email" placeholder="البريد" required>
<button type="submit">إضافة</button>
</form>
<div id="user-list"></div>
<div class="spinner" style="display:none">جاري التحميل...</div>
<!-- مثال 3: بحث مع تأخير (Debounce) -->
<input hx-get="/search"
hx-trigger="keyup changed delay:300ms"
hx-target="#search-results"
placeholder="ابحث...">
<div id="search-results"></div>
<!-- مثال 4: تحميل لا نهائي (Infinite Scroll) -->
<div hx-get="/items?page=2"
hx-trigger="revealed"
hx-swap="afterend">
<!-- عناصر -->
</div>
<!-- مثال 5: تأكيد قبل الحذف -->
<button hx-delete="/user/123"
hx-confirm="هل أنت متأكد؟"
hx-target="#user-123"
hx-swap="outerHTML">
حذف المستخدم
</button>
<!-- مثال 6: WebSocket -->
<div hx-connect="ws://localhost:8080/ws/chat"
hx-send="message"
hx-target="#chat-log">
<input name="message" hx-trigger="keyup[key=='Enter']">
</div>
<div id="chat-log"></div>
<!-- مثال 7: CSS Transitions -->
<div hx-get="/notification"
hx-swap="innerHTML transition:true"
hx-trigger="load delay:3s">
<!-- سيظهر مع تأثير الانتقال -->
</div>
<!-- Attributes المفيدة: -->
<!-- hx-get/post/put/patch/delete ← طلب HTTP -->
<!-- hx-target ← عنصر الهدف -->
<!-- hx-swap ← طريقة الاستبدال (innerHTML, outerHTML, beforeend, etc.) -->
<!-- hx-trigger ← متى يتم الطلب (click, keyup, load, etc.) -->
<!-- hx-push-url ← تحديث URL في History -->
<!-- hx-indicator ← عنصر مؤشر التحميل -->
<!-- hx-confirm ← رسالة تأكيد -->
📚 أدوات أخرى في HTML
قد يعجبك أيضاً
Alpine.js HTML
مكتبة JavaScript خفيفة للتفاعلات في HTML (Minimal JavaScript Framework)
Astro HTML
⭐إطار ويب لبناء مواقع محتوى سريعة (Content-focused Web Framework)
Emmet
⭐إضافة محرر لتوسيع الاختصارات (Editor Plugin for Abbreviation Expansion)
Handlebars
⭐محرك قوالب منطقي (Logic-less Template Engine)
Markdown
⭐لغة ترميز خفيفة للنصوص (Lightweight Markup Language)
MDX
⭐Markdown مدمج مع JSX (Markdown + JSX Component System)