ماژول های مشترک

ماژول‌های مشترک مجموعه‌ای از منابع بدون مجوز هستند که می‌توانند بین برنامه‌ها و برنامه‌های افزودنی دیگر به اشتراک گذاشته شوند. کاربردهای رایج ماژول های اشتراکی عبارتند از:

  • به عنوان یک API. شما می توانید یک ماژول مشترک را توزیع کنید که می تواند HTML، JS و منابع دیگر را برای ارائه یک API ارائه دهد که می تواند مستقل از برنامه های افزودنی وابسته به آن به روز شود. این می‌تواند برای زمان‌های اجرا و موتورهای بازی مفید باشد، جایی که برنامه‌ها اغلب حجم‌های کوچک‌تری از داده‌ها هستند که روی کد ماژول مشترک اجرا می‌شوند.
  • به عنوان بهینه سازی دانلود. ماژول اشتراکی حاوی منابع مشترکی است که توسط بسیاری از برنامه های افزودنی استفاده می شود. یک بار دانلود می شود، اولین باری که یک برنامه افزودنی وابسته نصب می شود.

آشکار

ماژول های مشترک از طریق دو فیلد مانیفست استفاده می شوند: صادرات و واردات.

فیلد صادرات نشان می دهد که یک برنامه افزودنی یک ماژول مشترک است که منابع خود را صادر می کند:

{
  "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
}

فیلد واردات توسط برنامه‌های افزودنی و برنامه‌ها برای اعلام اینکه به منابع ماژول‌های مشترک خاص وابسته هستند استفاده می‌شود:

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

دسترسی به منابع

منابع ماژول مشترک توسط یک مسیر رزرو شده _modules/SHARED_MODULE_ID در ریشه برنامه افزودنی واردکننده شما قابل دسترسی است. به عنوان مثال، برای گنجاندن اسکریپت "foo.js" از یک ماژول مشترک با شناسه "cccccccccccccccccccccccccccccccc"، از این مسیر از ریشه پسوند خود استفاده کنید:

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

اگر پسوند واردکننده دارای شناسه "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" باشد، URL کامل منابع موجود در ماژول مشترک است:

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

توجه داشته باشید که از آنجایی که منابع از ماژول های اشتراکی در مبدا برنامه افزودنی واردکننده قرار می گیرند، تمام امتیازات اعطا شده به برنامه افزودنی واردکننده برای کدنویسی در ماژول های مشترک در دسترس هستند. همچنین، Shared Module قادر است با استفاده از مسیرهای مطلق به منابع موجود در پسوند واردکننده دسترسی پیدا کند.

نصب / حذف نصب

یک ماژول اشتراک‌گذاری شده به‌طور خودکار از فروشگاه وب Chrome در صورت نیاز توسط یک برنامه افزودنی وابسته نصب می‌شود و زمانی که آخرین برنامه افزودنی که به آن اشاره می‌کند حذف نصب شود، به‌طور خودکار حذف نصب می‌شود. برای آپلود افزونه‌ای که از یک ماژول مشترک استفاده می‌کند، ماژول مشترک باید در فروشگاه وب Chrome منتشر شود و برنامه افزودنی نباید از طریق فهرست مجازش از استفاده از ماژول مشترک محدود شود.

در طول توسعه، باید هر ماژول مشترکی را که از برنامه افزودنی خود استفاده می کند، به صورت دستی نصب کنید. نصب خودکار برای افزونه هایی که به صورت جانبی بارگذاری می شوند یا به عنوان افزونه های بسته بندی نشده بارگذاری می شوند، انجام نمی شود. برای ماژول‌های مشترک نصب‌شده و بدون بسته‌بندی محلی، باید از فیلد کلید استفاده کنید تا مطمئن شوید که ماژول‌های مشترک از شناسه‌های صحیح استفاده می‌کنند.