โมดูลที่แชร์

โมดูลที่แชร์เป็นคอลเล็กชันทรัพยากรที่ไม่มีสิทธิ์ ซึ่งสามารถแชร์ระหว่างส่วนขยายและแอปอื่นๆ ได้ การใช้งานทั่วไปของโมดูลที่แชร์มีดังนี้

  • เป็น API คุณสามารถแจกจ่ายโมดูลที่แชร์ที่สามารถระบุ HTML, JS และแหล่งที่มาอื่นๆ เพื่อระบุ API ซึ่งสามารถอัปเดตแยกต่างหากจากส่วนขยายที่ขึ้นอยู่กับ API นั้นได้ วิธีนี้เป็นประโยชน์สำหรับรันไทม์และเครื่องมือเกม ซึ่งแอปมักจะเป็นเพย์โหลดข้อมูลขนาดเล็กที่ทำงานบนโค้ดของโมดูลที่แชร์
  • เป็นการเพิ่มประสิทธิภาพการดาวน์โหลด โมดูลที่ใช้ร่วมกันมีทรัพยากรทั่วไปที่ส่วนขยายจำนวนมากใช้ โดยจะดาวน์โหลด 1 ครั้ง เมื่อมีการติดตั้งส่วนขยายที่เกี่ยวข้องเป็นครั้งแรก

ไฟล์ Manifest

โมดูลที่แชร์ใช้ผ่านช่องไฟล์ Manifest 2 ช่อง ได้แก่ การส่งออกและการนำเข้า

ช่อง export ระบุว่าส่วนขยายเป็นโมดูลที่แชร์ซึ่งส่งออกทรัพยากร ดังต่อไปนี้

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

หากส่วนขยายที่นำเข้ามีรหัส "aaaaaaaaaaaaaaaaaaaaaaaaaaaaa" URL แบบเต็มไปยังทรัพยากรในโมดูลที่แชร์จะเป็นดังนี้

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

โปรดทราบว่า เนื่องจากทรัพยากรจากโมดูลที่แชร์วางซ้อนทับกับต้นทางของส่วนขยายการนำเข้า สิทธิ์ทั้งหมดที่มอบให้กับส่วนขยายการนำเข้าจึงพร้อมใช้งานสำหรับโค้ดในโมดูลที่แชร์ นอกจากนี้ โมดูลที่แชร์ยังเข้าถึงทรัพยากรในส่วนขยายที่นำเข้าได้โดยใช้เส้นทางสัมบูรณ์

ติดตั้ง / ถอนการติดตั้ง

โมดูลที่แชร์จะได้รับการติดตั้งโดยอัตโนมัติจาก Chrome เว็บสโตร์เมื่อส่วนขยายที่เกี่ยวข้องจำเป็น และจะถอนการติดตั้งโดยอัตโนมัติเมื่อส่วนขยายสุดท้ายที่อ้างอิง ในการอัปโหลดส่วนขยายที่ใช้โมดูลที่แชร์ โมดูลที่แชร์จะต้องเผยแพร่ใน Chrome เว็บสโตร์ และต้องไม่มีการจำกัดการใช้โมดูลที่แชร์ตามรายการที่อนุญาตของส่วนขยาย

ในระหว่างการพัฒนา คุณจะต้องติดตั้งโมดูลที่แชร์ที่ส่วนขยายใช้ด้วยตนเอง การติดตั้งอัตโนมัติจะไม่เกิดขึ้นกับส่วนขยายที่โหลดจากแหล่งที่ไม่รู้จักหรือโหลดเป็นส่วนขยายที่คลายการแพคข้อมูล สำหรับโมดูลที่แชร์ที่ติดตั้งในเครื่องและคลายการแพคข้อมูล คุณต้องใช้ช่องคีย์เพื่อตรวจสอบว่าโมดูลที่แชร์ใช้รหัสที่ถูกต้อง