دعم المنصات
نطاق المنصات في الإصدار الأول
| المنصة | الحالة | الملاحظة |
|---|---|---|
| H5 | ✅ مكتمل | جميع المكوّنات بكامل ميزاتها |
| برنامج WeChat المصغر | ✅ مكتمل (مع تخفيض جزئي) | تُخفَّض قدرات طبقات الحوار على مستوى سطح المكتب، انظر الجدول أدناه |
| برامج Alipay / Douyin المصغرة | 🚫 غير مدعومة في الإصدار الأول | ستُضاف أعمدة لاحقًا بعد التحقق من كل منصة على حدة عبر الترجمة الشرطية |
| التطبيقات (nvue) | 🚫 لن تُدعم | نظام عرض nvue يختلف عن webview وليس ضمن خارطة الطريق |
مصفوفة قدرات المكوّنات
«التخفيض» يعني إزالة القدرات غير المدعومة على المنصة عبر حراسة وقت الترجمة (لا يوجد كود ميت داخل حزمة البرنامج المصغر)، وليس فشلًا في وقت التشغيل.
| المكوّن | H5 | برنامج WeChat المصغر | استراتيجية التخفيض / الملاحظة |
|---|---|---|---|
| config-provider | مكتمل | مكتمل | provide/inject + متغيّرات CSS المضمّنة متاحة على كل المنصات؛ الوضع الداكن يعتمد على تبديل الفئة page.dark (لا يوجد document) |
| button / tag | مكتمل | مكتمل | — |
| icon | مكتمل | مكتمل | حلّ خط iconfont (في الويب يكون SVG مضمّنًا، انظر «فروق عرض icon» أدناه) |
| input | مكتمل | مكتمل | أنماط العنصر النائب عبر prop placeholder-style (لا يدعم MP العنصر الزائف ::placeholder) |
| checkbox / radio / switch | مكتمل | مكتمل | مرسومة عبر view (دون المكوّنات الأصلية، لتوحيد لغة التصميم lh) |
| form / form-item | مكتمل | مكتمل | منطق التحقق في دوالّ النواة النقية، صفر اعتماد على المنصة |
| select | مكتمل | مُخفَّض | root-portal + القياس بإطارين؛ التنقل بلوحة المفاتيح في H5 فقط، ويعتمد MP على النقر + scroll-view |
| dialog | مكتمل | مُخفَّض | root-portal؛ focus-trap / lockScroll في H5 فقط، ويعتمد MP على اعتراض القناع كحل احتياطي |
| tooltip | مكتمل | مُخفَّض | القياس بإطارين؛ لا يوجد hover، يُطلَق في MP بالنقر / اللمس |
| message / loading | مكتمل | مكتمل | نمط نقطة التركيب (لا يوجد document في البرنامج المصغر، فلا يمكن إنشاء DOM عبر JS) |
قيود برنامج WeChat المصغر المحددة والبدائل
| القيد | البديل |
|---|---|
لا يدعم وسم <svg> | تُحوَّل الأيقونات في وقت البناء إلى خط iconfont (مضمّن base64)، ويُعرَض عبر <text class="lh-iconfont"> |
لا يدعم ::placeholder | prop الخاص بـ input: placeholder-style / placeholder-class |
لا يدعم محدّد * العام / محدّدات السمات / :not() / :nth-* | تنقية وقت البناء: يُحوَّل محدّد * العام إلى flex + gap، ويُستبدل الباقي بأصناف مكافئة |
لا يوجد document / document.body | طبقات الحوار عبر root-portal؛ والخدمات الحتمية عبر نمط نقطة التركيب |
| لا توجد دلالة لتركيز لوحة المفاتيح | لا يُستدعى focus-trap / تنقل لوحة المفاتيح بسبب حراسة LH_IS_H5؛ مع ذلك تُخرَج سمات aria لقارئات الشاشة |
transitionend غير موثوق | تُحاذاة مدة حركات الدخول والخروج عبر CSS transition + setTimeout |
عدم اكتمال إنشاء المكوّنات في مرحلة onLoad | يجب أن تكون كل استدعاءات ref / القياس بعد onReady |
إصدار المكتبة الأساسية لـ WeChat
- يتطلب root-portal مكتبة أساسية ≥ 2.25.2 (يعتمد عليه تركيب طبقات الحوار في select / dialog / tooltip).
- تتخفّض الإصدارات الأقدم تلقائيًا إلى تموضع fixed داخل الصفحة كحل احتياطي (يُحكَم عليه عبر
getLhLibVersion())، وتبقى طبقة الحوار موجودة، لكنها تخضع لتدفق الصفحة في الترتيب الطبقي.
root-portal والمنصات مثل DingTalk
يُقسَّم lh-root-portal داخليًا إلى ثلاثة فروع عبر الترجمة الشرطية: يستخدم H5 العنصر <teleport to="body">، ويستخدم WeChat <root-portal>، أما المنصات التي لا تدعم root-portal مثل DingTalk فتستخدم تموضعًا ثابتًا داخل الصفحة. هذا مكوّن داخلي لا يحتاج المستخدم إلى الاهتمام به، وذُكر هنا لتوضيح مصدر الفروق في سلوك طبقات الحوار بين المنصات.