Progressive Web Apps (PWA) to nowoczesne aplikacje internetowe, które łączą funkcjonalność stron WWW i aplikacji mobilnych. Dzięki PWA sklep internetowy może działać szybciej, obsługiwać użytkowników offline i umożliwiać instalację na ekranie głównym smartfona. W tym artykule przeprowadzimy Cię krok po kroku przez proces tworzenia PWA dla e-commerce, kończąc na gotowym przykładowym kodzie aplikacji.
Zanim zaczniemy, upewnij się, że Twój sklep internetowy spełnia następujące wymagania:
✅ HTTPS – PWA wymaga bezpiecznego połączenia. Możesz użyć darmowego certyfikatu SSL np. Let’s Encrypt.
✅ Manifest aplikacji (manifest.json
) – plik definiujący wygląd i zachowanie PWA.
✅ Service Worker – skrypt obsługujący cache i działanie offline.
✅ Responsywny design – aplikacja powinna działać dobrze na różnych urządzeniach.
Plik manifest.json określa podstawowe parametry PWA, takie jak nazwa, ikony i kolorystyka.
manifest.json
dla e-commerce:{ "name": "Sklep Online", "short_name": "Sklep", "start_url": "/index.html", "display": "standalone", "background_color": "#ffffff", "theme_color": "#ff6600", "icons": [ { "src": "/icons/icon-192x192.png", "sizes": "192x192", "type": "image/png" }, { "src": "/icons/icon-512x512.png", "sizes": "512x512", "type": "image/png" } ] }
Po utworzeniu tego pliku dodaj go do strony w sekcji <head>
:
<link rel="manifest" href="/manifest.json">
Service Worker to skrypt, który umożliwia obsługę cache i działanie offline.
service-worker.js
:const CACHE_NAME = "shop-cache-v1"; const urlsToCache = [ "/", "/index.html", "/styles.css", "/script.js", "/icons/icon-192x192.png" ]; self.addEventListener("install", (event) => { event.waitUntil( caches.open(CACHE_NAME).then((cache) => { return cache.addAll(urlsToCache); }) ); }); self.addEventListener("fetch", (event) => { event.respondWith( caches.match(event.request).then((response) => { return response || fetch(event.request); }) ); });
Teraz zarejestruj Service Worker w script.js
:
if ("serviceWorker" in navigator) { navigator.serviceWorker.register("/service-worker.js") .then((registration) => { console.log("Service Worker registered with scope:", registration.scope); }) .catch((error) => { console.log("Service Worker registration failed:", error); }); }
Aby sprawdzić, czy aplikacja spełnia wymagania PWA:
F12
→ zakładka „Lighthouse”).Poniżej znajduje się kompletny zestaw plików dla podstawowego PWA:
index.html
<!DOCTYPE html> <html lang="pl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Sklep Online</title> <link rel="stylesheet" href="styles.css"> <link rel="manifest" href="manifest.json"> <script src="script.js" defer></script> </head> <body> <h1>Witaj w naszym sklepie!</h1> <p>Teraz działa jako PWA 🚀</p> </body> </html>
styles.css
body { font-family: Arial, sans-serif; text-align: center; }
script.js
if ("serviceWorker" in navigator) { navigator.serviceWorker.register("/service-worker.js"); }
service-worker.js
const CACHE_NAME = "shop-cache-v1"; const urlsToCache = ["/", "/index.html", "/styles.css", "/script.js"]; self.addEventListener("install", (event) => { event.waitUntil(caches.open(CACHE_NAME).then((cache) => cache.addAll(urlsToCache))); });
Gratulacje! 🎉 Stworzyłeś swoją pierwszą aplikację PWA dla e-commerce. Dzięki tej technologii Twój sklep internetowy działa szybciej, może być używany offline i instalowany na urządzeniach mobilnych. Teraz możesz dalej rozwijać projekt, np. dodając obsługę powiadomień push i dynamiczne ładowanie danych!
Aplikacja PWA (Progressive Web App) to aplikacja internetowa, która wykorzystuje nowoczesne technologie sieciowe, aby zapewnić użytkownikom doświadczenie zbliżone do korzystania z natywnych aplikacji mobilnych. PWA działa w przeglądarce, ale oferuje funkcje takie jak działanie offline, powiadomienia push czy możliwość instalacji na ekranie głównym urządzenia. :contentReference[oaicite:0]{index=0}
Wdrożenie PWA przynosi wiele korzyści, takich jak: - **Szybsze ładowanie**: Dzięki wykorzystaniu pamięci podręcznej, PWA ładuje się szybko, nawet przy słabym połączeniu internetowym. - **Działanie offline**: Użytkownicy mogą korzystać z aplikacji bez dostępu do internetu, co zwiększa jej dostępność. - **Łatwa instalacja**: PWA można zainstalować bezpośrednio z przeglądarki, bez konieczności pobierania ze sklepu z aplikacjami. - **Oszczędność kosztów**: Tworzenie i utrzymanie jednej aplikacji PWA jest często tańsze niż rozwijanie oddzielnych aplikacji na różne platformy. :contentReference[oaicite:1]{index=1}
Do stworzenia PWA niezbędne są: - **Responsywna strona internetowa**: Strona dostosowująca się do różnych rozmiarów ekranów i urządzeń. - **Plik manifestu**: Plik JSON zawierający metadane aplikacji, takie jak nazwa, ikony czy kolorystyka, który informuje przeglądarkę o sposobie wyświetlania aplikacji po instalacji. - **Service Worker**: Skrypt JavaScript działający w tle, który zarządza buforowaniem zasobów, obsługą powiadomień push i umożliwia działanie aplikacji w trybie offline.
Do tworzenia PWA wykorzystuje się standardowe technologie webowe, takie jak HTML, CSS i JavaScript. Dodatkowo, popularne frameworki i biblioteki, takie jak Angular, React czy Vue.js, oferują wbudowane moduły wspierające tworzenie aplikacji PWA, co ułatwia proces deweloperski.
Aby przekształcić istniejącą stronę w PWA, należy: 1. **Upewnić się, że strona jest responsywna**: Strona powinna poprawnie wyświetlać się na różnych urządzeniach i rozdzielczościach. 2. **Dodać plik manifestu**: Stworzyć plik `manifest.json` zawierający informacje o aplikacji, takie jak nazwa, ikony czy kolorystyka. 3. **Zaimplementować Service Workera**: Napisać i zarejestrować skrypt Service Worker, który będzie zarządzał buforowaniem zasobów i obsługą trybu offline. 4. **Zapewnić bezpieczne połączenie HTTPS**: PWA wymaga, aby strona była dostępna przez bezpieczne połączenie HTTPS.
Główne różnice między PWA a natywnymi aplikacjami mobilnymi to: - **Dostępność**: PWA są dostępne bezpośrednio przez przeglądarkę i mogą być zainstalowane bezpośrednio z niej, podczas gdy natywne aplikacje wymagają pobrania ze sklepu z aplikacjami. - **Kompatybilność**: PWA działają na różnych platformach i urządzeniach bez konieczności tworzenia oddzielnych wersji, podczas gdy natywne aplikacje muszą być dostosowane do konkretnych systemów operacyjnych. - **Aktualizacje**: PWA są aktualizowane automatycznie po stronie serwera, podczas gdy natywne aplikacje wymagają pobrania aktualizacji przez użytkownika.