0Pricing
HTML Academy · Урок

Регистрация service worker из HTML

Регистрируйте service worker с помощью тега script и API navigator

«Регистрация service worker из HTML» — бесплатный урок HTML Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения HTML Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс HTML Academy содержит 4 уроков всего.

Что такое сервис-воркер

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

Регистрация

Зарегистрируйте сервис-воркер из скрипта страницы: navigator.serviceWorker.register("/sw.js"). Браузер загружает /sw.js, разбирает его, выполняет событие установки и начинает перехватывать запросы в области действия регистрации.

if ("serviceWorker" in navigator) {
  navigator.serviceWorker.register("/sw.js")
    .then((reg) => console.log("Registered, scope:", reg.scope))
    .catch((err) => console.error("Registration failed:", err));
}

Сначала проверьте поддержку функции

Старые браузеры не поддерживают сервис-воркеры. Всегда проверяйте поддержку функции с помощью "serviceWorker" in navigator перед вызовом register, иначе в браузерах без этого API вызов вызовет ошибку. Добавление полифилла невозможно: сервис-воркеры нельзя реализовать с помощью полифилла, поскольку им требуется интеграция на уровне браузера.

Область действия

Область действия — это префикс пути, которым управляет сервис-воркер. По умолчанию область действия совпадает с каталогом файла сервис-воркера: /sw.js управляет всеми URL внутри /. Чтобы зарегистрировать сервис-воркер с более глубокой областью действия из другого расположения файла, задайте параметр области действия и передавайте заголовок, разрешающий такую область действия сервис-воркера.

Где разместить sw.js

Разместите sw.js в корне приложения (/sw.js), чтобы его область действия по умолчанию охватывала весь сайт. Более глубокие пути (/app/sw.js) ограничивают область действия каталогом /app/ и вложенными каталогами, что редко требуется.

Момент регистрации

Зарегистрируйте сервис-воркер после загрузки страницы, чтобы он не конкурировал за пропускную способность во время важного этапа отрисовки: window.addEventListener("load", () => navigator.serviceWorker.register("/sw.js")). Возможности PWA начнут работать при последующих посещениях, не задерживая первое посещение.

Обновления

Браузер автоматически проверяет наличие обновлённого sw.js (обычно каждые 24 часа и при большинстве загрузок страниц). Если содержимое файла изменилось, новый сервис-воркер загружается, устанавливается и ждёт в состоянии ожидания, пока не закроются все существующие вкладки, — затем активируется.

Принудительное обновление

registration.update() вручную запускает проверку обновлений. self.skipWaiting() внутри нового sw.js немедленно активирует его, не дожидаясь закрытия вкладок. Объедините эти вызовы, чтобы всегда запускать последнюю версию сервис-воркера, но учитывайте повторную загрузку данных во время сеанса.

Отмена регистрации

registration.unregister() удаляет сервис-воркер. Это полезно во время разработки, если неисправный сервис-воркер нарушает работу сайта. В Chrome DevTools на вкладке «Приложение» → «Сервис-воркеры» есть кнопка «Отменить регистрацию» для той же цели при отладке.

Распространённая ошибка

Регистрация сервис-воркера через HTTP без HTTPS завершается без видимой ошибки — сервис-воркерам требуется защищённый источник (HTTPS или localhost для разработки). Если регистрация не выполняется, проверьте консоль на наличие сообщения «Произошла ошибка сертификата SSL».

Взаимодействие сервис-воркера и страницы

Сервис-воркер не имеет доступа к DOM. Для передачи сообщений используйте navigator.serviceWorker.controller.postMessage() на странице и self.addEventListener("message", handler) в сервис-воркере (и наоборот). Это полезно для инвалидации кэша, проверки версии и пользовательских событий.

Первое и повторное посещение

При первом посещении сервис-воркер устанавливается и начинает управлять страницами только после перезагрузки страницы. Чтобы сразу управлять первой навигацией, вызовите self.clients.claim() в событии активации — это полезно для приложений, рассчитанных прежде всего на работу без сети.

Проверка знаний

Почему сервис-воркеры должны передаваться по HTTPS или через localhost?

Итоги

Регистрируйте сервис-воркеры из JS страницы с помощью navigator.serviceWorker.register("/sw.js") после проверки поддержки функции. Размещайте sw.js в корне приложения, чтобы получить полную область действия. Выполняйте регистрацию после загрузки, чтобы не конкурировать с важной отрисовкой. Обновления проверяются автоматически через определённые интервалы; принудительно запустить их можно с помощью registration.update или skipWaiting. Требуется HTTPS, чтобы предотвратить внедрение вредоносного сервис-воркера.

Часто задаваемые вопросы

Урок «Регистрация service worker из HTML» бесплатный?

Да — полный текст урока «Регистрация service worker из HTML» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс HTML Academy, подпишись на CoddyKit PRO. Курс HTML Academy содержит 4 уроков всего.

Чему я научусь в уроке «Регистрация service worker из HTML»?

Регистрируйте service worker с помощью тега script и API navigator Ты практикуешь HTML Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать HTML Academy?

Предыдущий опыт не требуется. HTML Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Регистрация service worker из HTML»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке HTML Academy?

Да. Каждый урок HTML Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Манифест веб-приложения
  2. Регистрация service worker из HTML
  3. Цвет темы и значки приложения
  4. Резервная страница для офлайн-режима
← Назад к HTML Academy