📋 محتويات الصفحة
📖 الوصف
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)
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)