مكونات التطبيق المصغّر

تم إطلاق مكونات الويب بهدف السماح للمطوّرين بتجميعها وإنشاء تطبيقات رائعة باستخدامها. ومن الأمثلة على هذه المكوّنات الأساسية عناصر الوقت في GitHub وعنصر مؤشرات الأداء الرئيسية للويب في Stefan Judis أو مفتاح التبديل للوضع الداكن في Google. ومع ذلك، عندما يتعلق الأمر بأنظمة التصميم الكاملة، لاحظت أن الأشخاص يفضلون الاعتماد على مجموعة متماسكة من المكونات من نفس البائع. في ما يلي قائمة غير مكتملة بالأمثلة، تشمل مكونات الويب UI5 من SAP وعناصر Polymer وعناصر Vaadin وFAST من Microsoft ومكونات الويب Material ومكونات AMP وغيرها الكثير. بسبب عدد من العوامل التي لا ترِد في هذه المقالة، توافد الكثير من المطوّرين أيضًا إلى أُطر عمل مثل React وVue.js وEmber.js وما إلى ذلك. وبدلاً من منح المطوّر حرية الاختيار من بين أي من هذه الخيارات (أو إجبار المطوّرين على اختيار مجموعة من المكوّنات التكنولوجية)، على المطوّرين استخدام تلك المجموعة بشكل عام.

المكونات في التطبيقات المصغّرة

يمكنك التفكير في هذه المكونات مثل أي من مكتبات المكونات المذكورة أعلاه. للحصول على نظرة عامة على المكوّنات المتاحة، يمكنك تصفُّح مكتبة مكوّنات WeChat، مكونات ByteDance، مكونات Alipay، مكونات Baidu، و مكونات التطبيقات السريعة.

أوضحت سابقًا أنّ <image> في تطبيق WeChat، على سبيل المثال، هو مكوّن ويب من الناحية الفنية، ولكن ليست كل هذه المكوّنات هي مكوّنات ويب من الناحية الفنية. يتم عرض بعض المكوّنات، مثل <map> و<video>، على أنّها مكوّنات مضمّنة في نظام التشغيل تظهر فوق مكوّن WebView. لا يتم الكشف عن تفاصيل التنفيذ هذه للمطوّر، ويُبرمَج المكوّن مثل أي مكوّن آخر.

تختلف التفاصيل دائمًا، ولكن المفاهيم العامة للبرمجة متماثلة لدى جميع موفّري التطبيقات الفائقة. من المفهوم المهمّ ربط البيانات، كما هو موضّح سابقًا في اللغات الترميزية. يتم بشكل عام تجميع المكوّنات حسب الوظيفة، ما يسهّل العثور على المكوّن المناسب للمهمة. يوجد أدناه مثال من تصنيف Alipay، وهو مشابه لتجميع المكونات لدى البائعين الآخرين.

  • عرض الحاويات
    • view
    • swiper
    • scroll-view
    • cover-view
    • cover-image
    • movable-view
    • movable-area
  • المحتوى الأساسي
    • text
    • icon
    • progress
    • rich-text
  • مكوّنات النموذج
    • button
    • form
    • label
    • input
    • textarea
    • radio
    • radio-group
    • checkbox
    • checkbox-group
    • switch
    • slider
    • picker-view
    • picker
  • التنقّل
    • navigator
  • مكوّنات الوسائط
    • image
    • video
  • لوحة الرسم
    • canvas
  • الربط
    • map
  • فتح المكوّنات
    • web-view
    • lifestyle
    • contact-button
  • تسهيل الاستخدام
    • aria-component

في ما يلي، يمكنك الاطّلاع على <image> من Alipay المستخدَم في توجيه a:for (راجِع عرض القائمة) الذي يكرّر صفيف بيانات الصور المقدَّم في index.js.

/* index.js */
Page({
  data
: {
    array
: [
     
{
        mode
: "scaleToFill",
        text
: "scaleToFill",
     
},
     
{
        mode
: "aspectFit",
        text
: "aspectFit",
     
},
   
],
    src
: "https://images.example.com/sample.png",
 
},
  imageError
(e) {
    console
.log("image", e.detail.errMsg);
 
},
  onTap
(e) {
    console
.log("image tap", e);
 
},
  imageLoad
(e) {
    console
.log("image", e);
 
},
});
<!-- index.axml -->
<view class="page">
 
<view class="page-section" a:for="{{array}}" a:for-item="item">
   
<view class="page-section-demo" onTap="onTap">
     
<image
       
class="image"
       
mode="{{item.mode}}"
        onTap
="onTap"
       
onError="imageError"
       
onLoad="imageLoad"
       
src="{{src}}"
       
lazy-load="true"
       
default-source="https://images.example.com/loading.png"
     
/>
   
</view>
 
</view>
</view>

يُرجى ملاحظة ربط البيانات بين item.mode والسمة mode، وsrc والسمة src، ومعالجات الأحداث الثلاثة onTap وonError وonLoad مع الدوالّ التي تحمل الاسم نفسه. كما هو موضح سابقًا، يتم تحويل علامة <image> داخليًا إلى <div> مع عنصر نائب لأبعاد الصورة النهائية، وميزة التحميل البطيء الاختيارية، ومصدر تلقائي، وغيرها.

يمكنك الاطّلاع على جميع خيارات الضبط المتاحة للمكوِّن في المستندات. من خلال معاينة المكوّن مع المحاكي المضمّنة في المستندات، يمكن الاطّلاع على الرمز البرمجي على الفور.

مستندات مكوّنات Alipay مع معاينة المكوّنات المضمّنة، تعرض محرِّر رمز مع محاكي يعرض المكوّن المعروض على جهاز iPhone 6 محاكي
مستندات مكوّنات Alipay مع معاينة المكوّنات المضمّنة
معاينة مكوّن Alipay قيد التشغيل في علامة تبويب منفصلة في المتصفّح، ويظهر فيه محرِّر رموز مع محاكي يعرض المكوّن المعروض على جهاز iPhone 6 مُحاكي.
تم عرض معاينة مكوّن Alipay في علامة تبويب خاصة بها.

يحتوي كل مكوّن أيضًا على رمز استجابة سريعة يمكن مسحه ضوئيًا باستخدام تطبيق Alipay الذي يفتح مثال المكوّن في مثال بسيط ومكتفٍ ذاتيًا.

تمت معاينة مكوّن &quot;image&quot; الخاص بـ Alipay على جهاز حقيقي بعد مسح رمز الاستجابة السريعة ضوئيًا في المستندات.
معاينة مكوّن <image> في Alipay على جهاز حقيقي بعد اتّباع رابط رمز الاستجابة السريعة من المستندات

يمكن للمطوّرين الانتقال من المستندات مباشرةً إلى بيئة التطوير المتكاملة في Alipay من خلال الاستفادة من مخطّط معرّف الموارد المنتظم (URI) الخاص antdevtool-tiny://. يتيح ذلك ربط المستندات مباشرةً بمشروع تطبيق صغير سيتم استيراده، ما يتيح للمطوّرين بدء استخدام المكوّن على الفور.

المكوّنات المخصّصة

بالإضافة إلى استخدام المكوّنات التي يوفّرها المورّد، يمكن للمطوّرين أيضًا إنشاء مكوّنات مخصّصة. يتوفر هذا المفهوم لتطبيقات WeChat و ByteDance و Alipay و Baidu، بالإضافة إلى Quick App. على سبيل المثال، يتألف المكوّن المخصّص في Baidu من أربعة ملفات يجب أن تكون موجودة في المجلد نفسه: custom.swan وcustom.css وcustom.js وcustom.json.

يشير الملف custom.json إلى محتوى المجلد كعنصر مخصّص.

{
 
"component": true
}

يحتوي الملف custom.swan على العلامات وcustom.css على ملف CSS.

<view class="name" bindtap="tap">{{name}} {{age}}</view>
.name {
 
color: red;
}

يحتوي الملف custom.js على المنطق. دوال دورة حياة المكوّن هي attached() detached() وcreated() وready(). يمكن أن يستجيب المكوّن أيضًا لأحداث دورة حياة الصفحة، وهي show() وhide().

Component({
  properties
: {
    name
: {
      type
: String,
      value
: "swan",
   
},
 
},
  data
: {
    age
: 1,
 
},
  methods
: {
    tap
: function () {},
 
},
  lifetimes
: {
    attached
: function () {},
    detached
: function () {},
    created
: function () {},
    ready
: function () {},
 
},
  pageLifetimes
: {
    show
: function () {},
    hide
: function () {},
 
},
});

يمكن بعد ذلك استيراد المكوّن المخصّص في index.json، ويحدِّد مفتاح الاستيراد الاسم (هنا: "custom") الذي يمكن استخدام المكوّن المخصّص معه في index.swan.

{
 
"usingComponents": {
   
"custom": "/components/custom/custom"
 
}
}
<view>
 
<custom name="swanapp"></custom>
</view>

الشكر والتقدير

تمت مراجعة هذه المقالة من قِبل جو ميدلي، كايسي باسكيز، ميليكا ميهاجيليا، آلان كينت، و"كيت غو".