Moduły udostępnione

Moduły udostępnione to bez uprawnień zbiory zasobów, które mogą być współużytkowane przez inne rozszerzenia i aplikacje. Typowe zastosowania modułów udostępnionych to:

  • Jako interfejs API. Możesz rozpowszechnić udostępniany moduł, który może zawierać kod HTML, JS i inne źródło udostępniać interfejs API, który można aktualizować niezależnie od zależnych od niego rozszerzeń. Może to być przydatne w środowiskach wykonawczych i silnikach gier, gdzie aplikacje są często mniejszymi ładunkami danych kod modułu udostępnionego.
  • W celu optymalizacji pobierania. Moduł udostępniony zawiera wspólne zasoby wykorzystywane przez wiele rozszerzeń. Jest pobierane raz, przy pierwszym instalowaniu rozszerzenia zależnego.

Plik manifestu

Moduły udostępnione są używane przez 2 pola manifestu: eksport i import.

Pole eksportu wskazuje, że rozszerzenie jest modułem udostępnionym, który eksportuje swoje zasoby:

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

Rozszerzenia i aplikacje używają pola import do deklarowania, że są zależne od zasobów konkretnych modułów udostępnionych:

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

Dostęp do zasobów

Dostęp do zasobów modułu udostępnionego jest uzyskiwany przez zarezerwowaną ścieżkę _modules/SHARED_MODULE_ID w katalogu głównym rozszerzenia do importowania. Aby na przykład uwzględnić skrypt „foo.js” z modułu udostępnionego dla Identyfikator „cccccccccccccccccccccccccccccccc” – użyj tej ścieżki głównej rozszerzenia:

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

Jeśli rozszerzenie do importowania ma identyfikator „aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa”, pełny adres URL zasobów w module udostępnionym to:

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

Ponieważ zasoby z modułów udostępnionych są nałożone na źródło importu wszystkie uprawnienia przyznane rozszerzeniu do importowania są dostępne w kodzie w Moduły. Moduł udostępniony ma również dostęp do zasobów w rozszerzeniu importowania za pomocą bezwzględnych ścieżek konwersji.

Zainstaluj / odinstaluj

Moduł udostępniony jest automatycznie instalowany ze sklepu Chrome Web Store, gdy jest potrzebny przez i odinstalowane automatycznie po odinstalowaniu ostatniego rozszerzenia, które się do niego odwołuje. Aby przesłać rozszerzenie, które korzysta z modułu udostępnionego, ten moduł musi być opublikowany w Sklep Chrome Web Store i to rozszerzenie nie mogą być ograniczane do korzystania z modułu udostępnionego przez lista dozwolonych.

W trakcie programowania musisz ręcznie zainstalować wszelkie moduły współdzielone, których używa Twoje rozszerzenie. Automatyczne instalacje nie są wykonywane w przypadku rozszerzeń, które są ładowane z innego miejsca lub wczytywane jako rozpakowane rozszerzeń. W przypadku zainstalowanych lokalnie, rozpakowanych modułów udostępnionych należy użyć pola key, aby sprawdź, czy moduły udostępnione używają prawidłowych identyfikatorów.