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

مكونات الويب

بدأت مكونات الويب بالسماح لمطوّري البرامج بتجميعها معًا وإنشاء تطبيقات رائعة فوقها. أمثلة على هذه المكوّنات الذرية هي العناصر الزمنية في GitHub، وهو ستيفان جوديس web-vitals-element أو القابس الحر إيقاف/تفعيل "الوضع الداكن" من Google عندما يتعلق الأمر أنظمة تصميم كاملة، إلا أنني لاحظت أن الناس يفضلون الاعتماد على مجموعة متماسكة من والمكونات من نفس البائع. تتضمن القائمة غير المكتملة للأمثلة أمثلة SAP مكونات الويب UI5، عناصر البوليمر، عناصر Vaadin، منتج Microsoft سريع، مكوّنات Material Webs، يمكن القول إن مكونات AMP وغيرها الكثير. بسبب عدد العوامل التي لا تتناولها هذه المقالة، لكن الكثير من المطوّرين قد توجَّهوا أيضًا إلى أطر العمل مثل React وVue.js Ember.js وغير ذلك. بدلاً من إعطاء المطوّر حرية الاختيار من بينها. أي من هذه الخيارات (أو، بناءً على وجهة نظرك، إجبارهم على اختيار التكنولوجيا) التطبيقات المتميزة التي توفر بشكل عام مجموعة من المكونات التي يجب أن يستخدمها المطورون.

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

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

في وقت سابق، لقد أوضحت أنّه في حين أنّ تطبيق <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 على جهاز حقيقي بعد مسح رمز الاستجابة السريعة ضوئيًا في المستندات.
معاينة مكوّن Alipay <image> على جهاز فعلي بعد اتّباع رابط رمز الاستجابة السريعة في المستندات

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

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

بالإضافة إلى استخدام المكونات التي يوفّرها المورّد، يمكن للمطوّرين أيضًا إنشاء مكوّنات مخصَّصة. تشير رسالة الأشكال البيانية يوجد مفهوم WeChat ByteDance, Alipay، Baidu وكذلك تطبيق سريع: على سبيل المثال، يتألف مكوِّن 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>

شكر وتقدير

تمت مراجعة هذه المقالة بواسطة جو ميدلي، كايس باسك، ميليكا ميهاجيليجا، آلان كينت، وكيث جو.