Пусть Angular Service Worker работает только для файлов Angular - PullRequest
0 голосов
/ 10 октября 2019

У меня есть приложение Angular 8 для совместной работы с другим приложением (старая версия приложения. Я продолжаю разрабатывать новую версию, и они должны продолжать работать вместе). Я знаю, что у Angular есть префиксы пути ['/path1', '/path2', '/path3']. Все остальные способы использования для API или старой версии приложения (например, ['/api/*', '/*']).

Я хочу использовать Service Worker, а Service Worker просто кэширует файлы Angular.

Пример угловых траекторий:

Маршрут нанесения:

  • /path1/*
  • /path2/*
  • /path3/*

И весь исходный файл Angular:

  • /index.html
  • /main.(_hash_).js
  • /common.(_hash_).js
  • /polyfills.(_hash_).js
  • ... *(all prod compiled angular files)*
  • /assets/*

Пример других путей:

  • /oldApp => (возвратindex.html для старой версии)
  • /* => (все файлы и API использования приложения старой версии)
  • /api/* => (для угловых API)

Я знаю, это сложно, но я могу изменить только приложение Angular.

Я, наконец, использовал это ngsw.config.json , но это тоже не работает.

{
  "index": "/index.html",
  "assetGroups": [
    {
      "name": "app",
      "installMode": "prefetch",
      "resources": {
        "files": [
          "/favicon.ico",
          "/index.html",
          "/*.css",
          "/*.js",
        ]
      }
    },
    {
      "name": "assets",
      "installMode": "lazy",
      "updateMode": "prefetch",
      "resources": {
        "files": [
          "/assets/**"
        ]
      }
    }
  ],
  "dataGroups": [
    {
      "name": "oldApp",
      "urls": [
        "/oldApp/**",
        "/**"
      ],
      "cacheConfig": {
        "max-size": 0,
        "maxAge": "0u",
        "strategy": "freshness"
      }
    },
    {
      "name": "api",
      "urls": [
        "/api/**"
      ],
      "cacheConfig": {
        "max-size": 0,
        "maxAge": "0u",
        "strategy": "freshness"
      }
    }
  ]
}

Извините за мой плохой английский.

1 Ответ

0 голосов
/ 21 октября 2019

Я написал свой собственный сценарий работника службы. Во-первых, я написал скрипт, работающий после компиляции. Сценарий считывает все скомпилированные имена файлов и создает новый файл js для работника сервиса. Во-вторых, я написал RegisterSWService внутри Angular. RegisterSWService файл реестра, созданный после компиляции.

...