🏷️

HTMX

مكتبة HTML لتفاعلات خادم-عميل بدون JavaScript (Hypermedia-Driven Library)

(3/5)
👁️ 7 مشاهدة
📅 02 Jul 2026
🌐 عام

مستوى الخبرة المطلوب:

🌱 مبتدئ ⚡ متوسط 🚀 محترف 🏢 مؤسسي
🔗 زيارة الموقع الرسمي
3
تقييم المستخدمين
التصنيف 🏷️ HTML
المشاهدات 7
تاريخ الإضافة 02/07/2026
آخر تحديث 02/07/2026

📖 الوصف

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

🔄 البدائل

أدوات بديلة يمكنك استخدامها

Alpine.js
jQuery
Vue.js
Stimulus

💻 مثال على الاستخدام

كيفية استخدام هذه الأداة

Example Code
<!-- تحميل ملف 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

قد يعجبك أيضاً