HeadlinesBriefing favicon HeadlinesBriefing.com

htmx 4.0 صدر: التغييرات الرئيسية والترحيل

Hacker News •
×

أصدر فريق htmx الإصدار 4.0.0 بعد 8 أشهر من العمل. نشأت الفكرة من إنشاء fixi، مما أدى إلى فهم أعمق لواجهة برمجة التطبيقات fetch() والبرمجة غير المتزامنة. كانت JavaScript تعتمد سابقًا على XMLHttpRequest بسبب مشكلات التوافق مع الإصدارات السابقة. أدى اتصال عرضي مع Christian إلى إثارة الاهتمام ببث HTML، مما دفع إلى التحول إلى fetch() داخليًا. بمساعدة Michael و Alex، قام الفريق بنقل fixi ومجموعة اختبارات htmx، وأعاد اكتشاف سبب قيام htmx بالعديد من الأمور كما فعل، ومواءمة التنفيذ الجديد عن كثب مع القديم.

الاختلافات السلوكية بين 2.x و 4.x صغيرة نسبيًا، مع خيارات مدروسة لدعم خدمات الويب التي يبلغ عمرها قرنًا. على وجه الخصوص، لم يتم وضع علامة 4.0 كـ latest على NPM لتجنب إجبار المستخدمين الذين يعتمدون على CDN غير مُصدَّر على الترقية. بدلاً من ذلك، يظل 2.x هو latest، بينما يبقى 4.0 كـ next حتى أوائل 2027. سيشير الموقع إلى 4.0.

تبرز ثلاثة تغييرات رئيسية. أولاً، وراثة السمات أصبحت الآن صريحة: في htmx 2، كانت سمات مثل hx-confirm موروثة افتراضيًا؛ في 4.0، يجب إضافة :inherited (مثل hx-confirm:inherited). هذا هو أكبر عبء ترحيل، لكن أداة سطر الأوامر تساعد في تحديد التغييرات المطلوبة، ولم يعد hx-disinherit ضروريًا. ثانيًا، تم توحيد أسماء الأحداث لتتبع htmx:phase:action[:sub-action] (مثل htmx:before:request بدلاً من htmx:beforeRequest). ثالثًا، دعم السجل لم يعد يستخدم localStorage افتراضيًا، وهو ما لن يلاحظه معظم المستخدمين. داخليًا، الترحيل من XMLHttpRequest إلى fetch() شفاف للمستخدمين.

تغييرات إضافية: تتلاشى معظم أحداث الخطأ في htmx:error، وتطلق أخطاء HTTP htmx:response:error، وتُزال أحداث htmx:xhr:*، وتُستبدل أحداث htmx:validation:* بالتحقق الأصلي للمتصفح. يحدد مدقق الترقية أسماء الأحداث القديمة في سمات hx-on و JavaScript. بشكل عام، يحافظ htmx 4.0 على التوافق مع تحديث البنية الداخلية وتوضيح السلوك.

الكيانات الرئيسية: الشركات: htmx، fixi | الأشخاص: Christian، Michael، Alex

الأسئلة الشائعة: ما هو أكبر تغيير في htmx 4.0؟

أكبر تغيير هو أن وراثة السمات أصبحت الآن صريحة. في htmx 2، كانت سمات مثل hx-confirm موروثة افتراضيًا؛ في 4.0، يجب إضافة :inherited (مثل hx-confirm:inherited) لتمكينها. تساعد أداة سطر الأوامر في العثور على الأماكن التي تحتاج إلى هذا التغيير.