الوحدات المشتركة

الوحدات المشتركة هي مجموعات من الموارد بدون إذن والتي يمكن مشاركتها بين الإضافات والتطبيقات الأخرى. الاستخدامات الشائعة للوحدات المشتركة هي:

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

البيان

تُستخدم الوحدات المشتركة من خلال حقلين من حقول البيان: التصدير والاستيراد.

يشير حقل التصدير إلى أنّ الإضافة هي "وحدة مشتركة" تصدِّر مواردها:

{
  "version": "1.0",
  "name": "My Shared Module",
  "export": {
    // Optional list of extension IDs explicitly allowed to
    // import this Shared Module's resources.  If no allowlist
    // is given, all extensions are allowed to import it.
    "allowlist": [
      "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
    ]
  }
  // Note: no permissions are allowed in Shared Modules
}

تستخدم الإضافات والتطبيقات حقل import للإشارة إلى أنها تعتمد على الموارد الواردة من "وحدات مشتركة" معيّنة:

{
  "version": "1.0",
  "name": "My Importing Extension",
  ...
  "import": [
    {"id": "cccccccccccccccccccccccccccccccc"},
    {"id": "dddddddddddddddddddddddddddddddd"
     "minimum_version": "0.5" // optional
    },
  ]
}

الوصول إلى الموارد

ويمكن الوصول إلى موارد الوحدة المشتركة من خلال المسار المحجوز _modules/SHARED_MODULE_ID في جذر الإضافة المستورَدة. على سبيل المثال، لتضمين النص البرمجي "foo.js" من وحدة مشتركة برقم التعريف "cccccccccccccccccccccccccccccc"، استخدم هذا المسار من جذر الإضافة:

<script src="_modules/cccccccccccccccccccccccccccccccc/foo.js">

إذا كانت إضافة الاستيراد تحتوي على المعرّف "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"، يكون عنوان URL الكامل للموارد في الوحدة المشتركة هو:

chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/_modules/cccccccccccccccccccccccccccccccc/

لاحظ أنه نظرًا لأنه يتم تضمين الموارد من الوحدات المشتركة في أصل إضافة الاستيراد، فإن جميع الامتيازات الممنوحة لإضافة الاستيراد تكون متاحة للترميز في الوحدات المشتركة. كذلك، يمكن للوحدة النمطية المشتركة الوصول إلى الموارد في إضافة الاستيراد باستخدام المسارات المطلقة.

التثبيت / إلغاء التثبيت

يتم تثبيت وحدة مشتركة تلقائيًا من سوق Chrome الإلكتروني عند الحاجة بواسطة إضافة تابعة، ويتم إلغاء تثبيتها تلقائيًا عند إلغاء تثبيت آخر إضافة تشير إليها. لتحميل إضافة تستخدم "وحدة مشتركة"، يجب نشر "الوحدة المشتركة" في "سوق Chrome الإلكتروني"، كما يجب عدم حظر الإضافة من استخدام "الوحدة المشتركة" من خلال القائمة المسموح بها التابعة لها.

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