Service Worker to skrypt uruchamiany przez przeglądarkę internetową w tle, niezależnie od strony internetowej, co pozwala na funkcje niezwiązane bezpośrednio z interfejsem użytkownika, takie jak push notyfikacje czy synchronizacja w tle. Service Workery działają jako pośrednik między aplikacją internetową a siecią (lub cache), umożliwiając tworzenie efektywnie działających, offline-first aplikacji webowych.
Przykład: Rejestracja Service Workera
W poniższym przykładzie pokażemy, jak zarejestrować Service Workera w aplikacji webowej.
HTML
<!DOCTYPE html>
<html>
<head>
<title>Rejestracja Service Workera</title>
</head>
<body>
<h1>Service Worker Demo</h1>
<p>Przykład pokazujący, jak zarejestrować Service Workera.</p>
<script src="app.js"></script>
</body>
</html>
JavaScript (app.js)
// Sprawdzanie, czy Service Workers są wspierane
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/service-worker.js')
.then(function(registration) {
// Rejestracja udana
console.log('ServiceWorker registration successful with scope: ',
registration.scope);
}, function(err) {
// Rejestracja nieudana
console.log('ServiceWorker registration failed: ', err);
});
});
}
Service Worker (service-worker.js)
// Instalacja Service Workera
self.addEventListener('install', function(event) {
// Działania wykonywane podczas instalacji,
// np. cachowanie zasobów
console.log('Service Worker installing.');
});
// Aktywacja Service Workera
self.addEventListener('activate', function(event) {
// Działania wykonywane podczas aktywacji,
// np. czyszczenie starych cache
console.log('Service Worker activated.');
});
// Nasłuchiwanie na żądania fetch
self.addEventListener('fetch', function(event) {
// Można tutaj manipulować sposób obsługi żądań sieciowych
console.log('Fetching:', event.request.url);
});
Jak działa Service Worker
- Rejestracja: Service Worker jest rejestrowany w pliku JavaScript przypisanym do strony. Dzieje się to zazwyczaj podczas ładowania strony.
- Instalacja: Po zarejestrowaniu, Service Worker przechodzi przez etap instalacji, gdzie można cachować niezbędne zasoby.
- Aktywacja: Po instalacji, Service Worker jest gotowy do użycia i może obsługiwać zdarzenia takie jak fetch, push, czy synchronizacja w tle.
- Obsługa żądań: Service Worker może przechwytywać żądania sieciowe od strony i zarządzać nimi, np. przez serwowanie zasobów z cache.
Podsumowanie
Service Worker w JavaScript to potężne narzędzie umożliwiające tworzenie aplikacji webowych, które działają szybko i efektywnie, nawet w trybie offline. Dzięki Service Workerom, deweloperzy mogą kontrolować sposób ładowania zasobów, oferować zawartość cache’owaną kiedy sieć jest niedostępna, a także implementować funkcjonalności takie jak push notyfikacje. Rejestracja i zarządzanie Service Workerem wymaga zrozumienia jego cyklu życia, w tym instalacji, aktywacji i obsługi zdarzeń.