Розробка прогресивних веб-додатків (PWA): крок за кроком

Сьогодні користувачі хочуть, щоб веб-додатки працювали так само швидко та надійно, як нативні. Саме тут на сцену виходять прогресивні веб-додатки (Progressive Web Apps, PWA) — рішення, яке об’єднує найкраще від вебу та мобільних додатків. У цій статті ми розглянемо, що таке PWA, і крок за кроком навчимося створювати власний прогресивний веб-додаток.
Що таке PWA?
PWA — це веб-додаток, який виглядає і працює як нативний додаток. Користувач може додати його на головний екран, працювати з ним офлайн і отримувати push-сповіщення.
Основні характеристики PWA:
- Прогресивність: PWA працює на будь-якому пристрої, який підтримує сучасні браузери.
 - Офлайн-режим: Завдяки Service Workers PWA може працювати навіть без інтернету.
 - Швидкість: PWA завантажується швидше, ніж звичайні веб-сайти.
 - Нативний досвід: Додаток виглядає та працює як мобільний, включаючи можливість встановлення на головний екран.
 
Крок 1: Створіть структуру проєкту
Для початку створимо простий веб-додаток. Припустимо, що ви використовуєте базовий стек: HTML, CSS, і JavaScript. Створіть основні файли:
/my-pwa
  /css
    styles.css
  /js
    app.js
  index.html
index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Мій PWA</title>
<link rel="stylesheet" href="/css/styles.css">
</head>
<body>
<h1>Ласкаво просимо до PWA!</h1>
<script src="/js/app.js"></script>
</body>
</html>
Крок 2: Додайте файл маніфесту
Файл Web App Manifest надає браузеру інформацію про ваш додаток (назва, іконки, кольори тощо). Створіть файл manifest.json у кореневій директорії:
{
  "name": "Мій PWA",
  "short_name": "PWA",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#0000ff",
  "icons": [
    {
      "src": "/icons/icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "/icons/icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ]
}
Додайте посилання на маніфест у index.html:
<link rel="manifest" href="/manifest.json">
Крок 3: Реалізуйте Service Worker
Service Worker — це скрипт, який виконується у фоновому режимі та забезпечує офлайн-роботу, кешування і push-сповіщення.
Створіть Service Worker:
Створіть файл /sw.js у кореневій директорії:
const CACHE_NAME = 'pwa-cache-v1';
const urlsToCache = [
  '/',
  '/css/styles.css',
  '/js/app.js',
  '/manifest.json'
];
// Встановлення Service Worker
self.addEventListener('install', (event) => {
  event.waitUntil(
    caches.open(CACHE_NAME).then((cache) => {
      console.log('Кешування файлів');
      return cache.addAll(urlsToCache);
    })
  );
});
// Перехоплення запитів
self.addEventListener('fetch', (event) => {
  event.respondWith(
    caches.match(event.request).then((response) => {
      return response || fetch(event.request);
    })
  );
});
// Оновлення Service Worker
self.addEventListener('activate', (event) => {
  const cacheWhitelist = [CACHE_NAME];
  event.waitUntil(
    caches.keys().then((cacheNames) => {
      return Promise.all(
        cacheNames.map((cacheName) => {
          if (!cacheWhitelist.includes(cacheName)) {
            return caches.delete(cacheName);
          }
        })
      );
    })
  );
});
Крок 4: Зареєструйте Service Worker
У файлі app.js зареєструйте ваш Service Worker:
if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/sw.js')
    .then((registration) => {
      console.log('Service Worker зареєстровано:', registration);
    })
    .catch((error) => {
      console.error('Помилка реєстрації Service Worker:', error);
    });
}
Крок 5: Додайте іконки
Створіть директорію /icons і додайте іконки у форматах 192×192 і 512×512. Це необхідно для того, щоб додаток міг бути доданий на головний екран.
Крок 6: Тестуйте ваш PWA
- Встановлення PWA:
Відкрийте ваш додаток у Chrome, перейдіть до “Додати на головний екран”. Ви побачите, що додаток поводиться як нативний. - Тест офлайн-режиму:
Відключіть інтернет і переконайтеся, що PWA працює завдяки кешованим файлам. 
Переваги PWA
- Швидкість та продуктивність: Завантажується миттєво завдяки кешуванню.
 - Офлайн-доступ: Користувачі можуть працювати навіть без інтернету.
 - Зручність: Легко встановлюється на пристрої без потреби у магазинах додатків.
 - Економія ресурсів: Розробка дешевша і простіша порівняно з нативними додатками.
 
Висновок
Прогресивні веб-додатки — це сучасний підхід до створення веб-додатків, який дозволяє поєднати переваги вебу та мобільних додатків. Дотримуючись цього гайда, ви зможете створити PWA, що підвищить зручність користувачів і продуктивність вашого додатка.
Тож, якщо ви хочете створити щось зручне, швидке та сучасне — спробуйте PWA!