Поиск…


Вступление

Мы увидим, как настроить службу, работающую на угловом уровне, чтобы позволить нашему веб-приложению иметь автономные возможности.

Служебный работник - это специальный скрипт, который работает в фоновом режиме в браузере и управляет сетевыми запросами для данного источника. Он изначально установлен приложением и остается резидентом на машине пользователя / устройстве. Он активируется браузером, когда загружается страница из его источника и имеет возможность отвечать на HTTP-запросы во время загрузки страницы.

Добавить Service Worker в наше приложение

Во-первых, если вы консультируетесь с mobile.angular.io, флаг -mobile больше не работает.

Поэтому, чтобы начать, мы можем создать нормальный проект с угловым кли.

ng new serviceWorking-example
cd serviceWorking-example

Теперь важно, чтобы сказать угловатому кли, что мы хотим использовать сервисного работника, нам нужно сделать:

ng set apps.0.serviceWorker = true

Если по какой-либо причине у вас нет установленного @ angular / service-worker, вы увидите сообщение:

В вашем проекте настроено serviceWorker = true, но @ angular / service-worker не установлен. Запустите npm install --save-dev @angular/service-worker и повторите попытку или запустите ng set apps.0.serviceWorker=false в вашем .angular-cli.json.

Проверьте .angular-cli.json, и теперь вы должны увидеть это: «serviceWorker»: true

Когда этот флаг верен, производственные сборки будут настроены вместе с работником службы.

Файл ngsw-manifest.json будет сгенерирован (или добавлен в случае, если мы создадим ngsw-manifest.json в корне проекта, как правило, это делается для указания маршрутизации, в будущем это, вероятно, будет сделано автоматически) в dist / root, и там будет скопирован сценарий рабочего лица. Короткий скрипт будет добавлен в index.html для регистрации рабочего.

Теперь, если мы создадим приложение в режиме производства ng build --prod

И проверьте dist / folder.

Там вы увидите три новых файла:

  • работник-basic.min.js
  • SW-register.HASH.bundle.js
  • ngsw-manifest.json

Кроме того, index.html теперь включает этот скрипт sw-register, который регистрирует для нас Угловой Службу Сервиса (ASW).

Обновите страницу в своем браузере (обслуживается веб-сервером для Chrome)

Откройте Инструменты разработчика. Перейдите в приложение -> Служащие службы

введите описание изображения здесь

Хорошо, теперь рабочий службы работает!

Теперь наше приложение должно загружаться быстрее, и мы должны иметь возможность использовать приложение в автономном режиме.

Теперь, если вы включите автономный режим на консоли Chrome, вы увидите, что наше приложение в http: // localhost: 4200 / index.html работает без подключения к Интернету.

Но в http: // localhost: 4200 / у нас есть проблема, и она не загружается, это связано с тем, что кэш статического содержимого поддерживает только файлы, перечисленные в манифесте.

Например, если манифест объявляет URL-адрес /index.html, запросы к /index.html будут отвечать на кеш, но запрос на / или / some / route будет отправлен в сеть.

Именно там входит плагин перенаправления маршрута. Он считывает конфигурацию маршрутизации из манифеста и перенаправляет настроенные маршруты на указанный маршрут индекса.

В настоящее время этот раздел конфигурации должен быть написан вручную (19-7-2017). В конце концов, он будет создан из конфигурации маршрута, присутствующей в источнике приложения.

Итак, если теперь мы создаем или ngsw-manifest.json в корне проекта

{
  "routing": {
    "routes": {
      "/": {
        "prefix": false
      }
    },
    "index": "/index.html"
  }
}

И мы снова создаем наше приложение, теперь, когда мы идем к http: // localhost: 4200 / , мы должны перенаправляться на http: // localhost: 4200 / index.html .

Для получения дополнительной информации о маршрутизации прочтите официальную документацию здесь

Здесь вы можете найти дополнительную документацию об обслуживающих рабочих:

https://developers.google.com/web/fundamentals/getting-started/primers/service-workers

https://docs.google.com/document/d/19S5ozevWighny788nI99worpcIMDnwWVmaJDGf_RoDY/edit#

И здесь вы можете увидеть альтернативный способ реализации службы, работающей с использованием библиотеки SW precache:

https://coryrylan.com/blog/fast-offline-angular-apps-with-service-workers



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow