Skip to content

Cum să creezi o Progressive Web App — Service Worker și Offline

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să creezi o Progressive Web App. We cover key concepts, practical examples, and best practices.

În acest ghid rapid vei învăța cum să creezi o Progressive Web App (PWA) pornind de la un site web existent, adăugând Service Worker, manifest și capabilități offline.

The Problem

Site-urile web obișnuite nu pot fi instalate pe ecranul principal al telefonului, nu funcționează offline și nu au acces la API-uri native. Utilizatorii preferă aplicațiile native, dar dezvoltarea separată este costisitoare.

The Wrong Way

// Service Worker gol sau inexistent
// Site-ul nu funcționează fără conexiune la internet

The Right Way

// sw.js — Service Worker cu cache și offline
self.addEventListener("install", (event) => {
  event.waitUntil(
    caches.open("pwa-cache-v1").then((cache) => {
      return cache.addAll([
        "/",
        "/index.html",
        "/style.css",
        "/app.js",
        "/icon-192.png",
      ]);
    })
  );
});

self.addEventListener("fetch", (event) => {
  event.respondWith(
    caches.match(event.request).then((response) => {
      return response || fetch(event.request);
    })
  );
});

Output: Aplicația se încarcă și din cache, funcționând offline complet.

Step-by-Step Fix

1. Creează manifest.json

{
  "name": "Aplicația Mea",
  "short_name": "AppMea",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#2196f3",
  "icons": [
    { "src": "/icon-192.png", "sizes": "192x192", "type": "image/png" },
    { "src": "/icon-512.png", "sizes": "512x512", "type": "image/png" }
  ]
}

2. Înregistrează Service Worker-ul

if ("serviceWorker" in navigator) {
  navigator.serviceWorker.register("/sw.js");
}
<link rel="manifest" href="/manifest.json">

4. Testează cu Lighthouse

# Chrome DevTools > Lighthouse > PWA
# Verifică: instalabil, offline, HTTPS

Prevention Tips

  • Toate resursele din cache.addAll trebuie să existe, altfel instalarea eșuează
  • Folosește HTTPS — Service Worker-ul nu funcționează pe HTTP
  • Actualizează versiunea cache-ului la fiecare deploy
  • Testează offline în DevTools > Network > Offline

Common Mistakes

  1. Fără HTTPS — Service Worker-ul nu se înregistrează pe conexiuni nesigure
  2. Cache prea mare — adăugarea a sute de fișiere în cache blochează instalarea
  3. Versionare greșită — fără schimbarea numelui cache-ului, update-urile nu ajung la utilizatori
  4. Fără fallback pentru rețea — utilizatorii văd pagini goale când cache-ul lipsește
  5. Manifest incomplet — fără icoane de 192x192 și 512x512, PWA nu este instalabilă

FAQ

### Ce este o PWA?

O Progressive Web App este o aplicație web care poate fi instalată pe dispozitiv, funcționează offline și oferă o experiență asemănătoare cu o aplicație nativă.

PWA funcționează pe iOS?

Da, începând cu iOS 11.3, Safari suportă Service Worker și manifest, deci PWA funcționează pe iPhone.

Cum șterg cache-ul unui Service Worker?

Deschide Chrome DevTools > Application > Cache Storage și șterge manual, sau incrementează versiunea cache-ului în sw.js.

Pot folosi PWA pentru notificări push?

Da, PWA suportă Push API și Notification API pentru a trimite notificări chiar și când aplicația nu este deschisă.

Care este diferența dintre PWA și aplicația nativă?

PWA nu necesită instalare din App Store, ocupă mult mai puțin spațiu și se actualizează automat, dar are acces limitat la hardware-ul dispozitivului.

Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. DodaTech tools integrate seamlessly with web technologies for enhanced productivity and security.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro