Slovenščina

Celovit vodnik za implementacijo progresivnih spletnih aplikacij (PWA), ki zajema osnovne koncepte, servisne delavce, manifestne datoteke, potisna obvestila in najboljše prakse za globalno občinstvo.

Progresivne spletne aplikacije: Celovit vodnik za implementacijo za globalne razvijalce

Progresivne spletne aplikacije (PWA) predstavljajo premik paradigme v spletnem razvoju, ki briše meje med tradicionalnimi spletnimi stranmi in izvornimi mobilnimi aplikacijami. Ponujajo izboljšano uporabniško izkušnjo, za katero so značilne zanesljivost, možnost namestitve in vključenost, zaradi česar so idealna rešitev za doseganje globalnega občinstva z različno internetno povezljivostjo in zmogljivostmi naprav.

Kaj so progresivne spletne aplikacije?

PWA so spletne aplikacije, ki izkoriščajo sodobne spletne standarde za zagotavljanje izkušnje, podobne izvornim aplikacijam. So:

Za razliko od izvornih aplikacij so PWA odkrite prek iskalnikov, enostavno deljive prek URL-jev in od uporabnikov ne zahtevajo obiska trgovin z aplikacijami. Zaradi tega so dostopna in stroškovno učinkovita rešitev za podjetja, ki želijo razširiti svoj doseg.

Osnovne tehnologije za PWA

PWA so zgrajene na treh osnovnih tehnologijah:

1. HTTPS

Varnost je najpomembnejša. PWA morajo biti postrežene preko HTTPS-ja, da se prepreči prisluškovanje in zagotovi celovitost podatkov. To je temeljna zahteva za delovanje servisnih delavcev.

2. Servisni delavci

Servisni delavci so JavaScript datoteke, ki se izvajajo v ozadju, ločeno od glavne niti brskalnika. Delujejo kot proxy strežniki med spletno aplikacijo in omrežjem, kar omogoča funkcije, kot so:

Življenjski cikel servisnega delavca: Razumevanje življenjskega cikla servisnega delavca (registracija, namestitev, aktivacija, posodobitve) je ključnega pomena za učinkovito implementacijo PWA. Nepravilno upravljanje lahko povzroči težave s predpomnjenjem in nepričakovano vedenje. Posodobitve bomo podrobneje obravnavali kasneje.

3. Manifest spletne aplikacije

Manifest spletne aplikacije je JSON datoteka, ki zagotavlja metapodatke o PWA, kot so:

Koraki implementacije: Gradnja preproste PWA

Poglejmo si korake za izdelavo preproste PWA:

1. korak: Nastavite HTTPS

Zagotovite, da je vaša spletna stran postrežena preko HTTPS-ja. Brezplačno SSL potrdilo lahko pridobite pri Let's Encrypt.

2. korak: Ustvarite manifest spletne aplikacije (manifest.json)

Ustvarite datoteko z imenom `manifest.json` in dodajte naslednjo kodo:


{
  "name": "Moja preprosta PWA",
  "short_name": "PWA",
  "icons": [
    {
      "src": "icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ],
  "start_url": "/index.html",
  "display": "standalone",
  "theme_color": "#ffffff",
  "background_color": "#ffffff"
}

Zamenjajte `icon-192x192.png` in `icon-512x512.png` z vašimi dejanskimi datotekami ikon. Te ikone boste morali ustvariti v različnih velikostih. Pri tem vam lahko pomagajo spletna orodja, kot je Real Favicon Generator.

3. korak: Povežite manifestno datoteko v vašem HTML-ju

Dodajte naslednjo vrstico v razdelek `` vaše datoteke `index.html`:


<link rel="manifest" href="/manifest.json">

4. korak: Ustvarite servisnega delavca (service-worker.js)

Ustvarite datoteko z imenom `service-worker.js` in dodajte naslednjo kodo:


const CACHE_NAME = 'my-pwa-cache-v1';
const urlsToCache = [
  '/',
  '/index.html',
  '/style.css',
  '/script.js',
  '/icon-192x192.png',
  '/icon-512x512.png'
];

self.addEventListener('install', function(event) {
  // Izvedite korake namestitve
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function(cache) {
        console.log('Odprt predpomnilnik');
        return cache.addAll(urlsToCache);
      })
  );
});

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request)
      .then(function(response) {
        // Zadetek v predpomnilniku - vrni odgovor
        if (response) {
          return response;
        }

        // POMEMBNO: Če smo tukaj, pomeni, da zahteva ni bila najdena v predpomnilniku.
        return fetch(event.request).then(
          function(response) {
            // Preverite, ali smo prejeli veljaven odgovor
            if(!response || response.status !== 200 || response.type !== 'basic') {
              return response;
            }

            // POMEMBNO: Klonirajte odgovor. Odgovor je tok
            // in ker želimo, da brskalnik porabi odgovor
            // kot tudi predpomnilnik porabi odgovor, moramo
            // ga klonirati, da imamo dve neodvisni kopiji.
            var responseToCache = response.clone();

            caches.open(CACHE_NAME)
              .then(function(cache) {
                cache.put(event.request, responseToCache);
              });

            return response;
          }
        );
      })
  );
});

self.addEventListener('activate', function(event) {

  var cacheWhitelist = [CACHE_NAME];

  event.waitUntil(
    caches.keys().then(function(cacheNames) {
      return Promise.all(
        cacheNames.map(function(cacheName) {
          if (cacheWhitelist.indexOf(cacheName) === -1) {
            return caches.delete(cacheName);
          }
        })
      );
    })
  );
});

Ta servisni delavec med namestitvijo predpomni določene datoteke in jih postreže iz predpomnilnika, ko je uporabnik brez povezave ali na počasnem omrežju.

5. korak: Registrirajte servisnega delavca v vašem JavaScriptu

Dodajte naslednjo kodo v vašo datoteko `script.js`:


if ('serviceWorker' in navigator) {
  window.addEventListener('load', function() {
    navigator.serviceWorker.register('/service-worker.js')
      .then(function(registration) {
        // Registracija je bila uspešna
        console.log('Registracija ServiceWorker uspešna z obsegom: ', registration.scope);
      },
      function(err) {
        // registracija ni uspela :(
        console.log('Registracija ServiceWorker ni uspela: ', err);
      });
  });
}

Ta koda preveri, ali brskalnik podpira servisne delavce, in registrira datoteko `service-worker.js`.

6. korak: Preizkusite svojo PWA

Odprite svojo spletno stran v brskalniku, ki podpira PWA (npr. Chrome, Firefox, Safari). Odprite razvijalska orodja in preverite zavihek »Application«, da vidite, ali je servisni delavec pravilno registriran in ali je manifestna datoteka naložena.

Sedaj bi morali v brskalniku videti poziv »Dodaj na domači zaslon«. S klikom na ta poziv boste namestili PWA na svojo napravo.

Napredne funkcije in premisleki za PWA

Potisna obvestila

Potisna obvestila so močan način za ponovno pritegnitev uporabnikov k vaši PWA. Za implementacijo potisnih obvestil boste morali:

  1. Pridobiti ključ za Push API: Uporabiti boste morali storitev, kot je Firebase Cloud Messaging (FCM) ali podobno, za upravljanje potisnih obvestil. To zahteva ustvarjanje računa in pridobitev ključa API.
  2. Naročiti uporabnika: V vaši PWA boste morali od uporabnika zahtevati dovoljenje za prejemanje potisnih obvestil in ga nato naročiti na vašo storitev potisnih obvestil.
  3. Upravljati dogodke potisnih obvestil: V vašem servisnem delavcu boste morali poslušati dogodke potisnih obvestil in uporabniku prikazati obvestilo.

Primer (poenostavljeno - z uporabo Firebase):

V vašem `service-worker.js`:


// Uvozite knjižnice Firebase
importScripts('https://www.gstatic.com/firebasejs/9.6.11/firebase-app-compat.js');
importScripts('https://www.gstatic.com/firebasejs/9.6.11/firebase-messaging-compat.js');

// Inicializirajte Firebase
const firebaseConfig = {
  apiKey: "YOUR_API_KEY",
  authDomain: "YOUR_AUTH_DOMAIN",
  projectId: "YOUR_PROJECT_ID",
  storageBucket: "YOUR_STORAGE_BUCKET",
  messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
  appId: "YOUR_APP_ID",
  measurementId: "YOUR_MEASUREMENT_ID"
};

firebase.initializeApp(firebaseConfig);

const messaging = firebase.messaging();

messaging.onBackgroundMessage(function(payload) {
  console.log('[firebase-messaging-sw.js] Prejeto sporočilo v ozadju ', payload);
  // Tukaj prilagodite obvestilo
  const notificationTitle = 'Naslov sporočila v ozadju';
  const notificationOptions = {
    body: 'Telo sporočila v ozadju.',
    icon: '/icon-512x512.png'
  };

  self.registration.showNotification(notificationTitle, notificationOptions);
});

Pomembno: Zamenjajte nadomestne vrednosti z vašo dejansko konfiguracijo Firebase. Ta primer prikazuje obravnavo sporočil v ozadju. Logiko za naročanje boste morali implementirati v vaši glavni JavaScript kodi.

Sinhronizacija v ozadju

Sinhronizacija v ozadju omogoča vaši PWA, da opravlja naloge tudi, ko je uporabnik brez povezave. To je uporabno za scenarije, kot so:

Za uporabo sinhronizacije v ozadju se boste morali v svojem servisnem delavcu registrirati za dogodek `sync` in obravnavati logiko sinhronizacije.

Strategije za podporo brez povezave

Obstaja več strategij za zagotavljanje podpore brez povezave v vaši PWA:

Najboljša strategija je odvisna od specifičnih zahtev vaše aplikacije.

Posodobitve PWA

Posodobitve servisnega delavca so ključni del vzdrževanja PWA. Ko brskalnik zazna spremembo v vaši datoteki `service-worker.js` (tudi spremembo enega samega bajta), sproži postopek posodobitve. Nov servisni delavec se namesti v ozadju, vendar ne postane aktiven, dokler uporabnik naslednjič ne obišče vaše PWA ali dokler niso zaprti vsi obstoječi zavihki, ki jih nadzoruje stari servisni delavec.

Takojšnjo posodobitev lahko vsilite s klicem `self.skipWaiting()` v dogodku `install` vašega novega servisnega delavca in `clients.claim()` v dogodku `activate`. Vendar pa lahko to zmoti uporabniško izkušnjo, zato uporabljajte previdno.

SEO premisleki za PWA

PWA so na splošno prijazne do SEO, saj so v bistvu spletne strani. Vendar je treba upoštevati nekaj stvari:

Združljivost med brskalniki

Čeprav PWA temeljijo na spletnih standardih, se podpora brskalnikov lahko razlikuje. Pomembno je, da svojo PWA preizkusite v različnih brskalnikih in na različnih napravah, da zagotovite pravilno delovanje. Uporabite zaznavanje funkcij za elegantno degradacijo funkcionalnosti v brskalnikih, ki ne podpirajo določenih funkcij.

Odpravljanje napak v PWA

Odpravljanje napak v PWA je lahko zahtevno zaradi asinhrone narave servisnih delavcev. Uporabite razvijalska orodja brskalnika za pregled registracije servisnega delavca, predpomnjenja in omrežnih zahtev. Bodite pozorni na zapise v konzoli in sporočila o napakah.

Primeri PWA po svetu

Številna podjetja po svetu so uspešno implementirala PWA. Tukaj je nekaj različnih primerov:

Zaključek: Sprejemanje prihodnosti spleta

Progresivne spletne aplikacije ponujajo prepričljivo alternativo tradicionalnim spletnim stranem in izvornim mobilnim aplikacijam. Zagotavljajo vrhunsko uporabniško izkušnjo, izboljšano zmogljivost in večjo vključenost, zaradi česar so dragoceno orodje za podjetja, ki želijo doseči globalno občinstvo. Z razumevanjem osnovnih konceptov in sledenjem korakom implementacije, opisanih v tem vodniku, lahko razvijalci ustvarijo PWA, ki so zanesljive, namestljive in privlačne, kar zagotavlja konkurenčno prednost v današnjem svetu, kjer so mobilne naprave na prvem mestu. Sprejmite prihodnost spleta in začnite graditi svoje progresivne spletne aplikacije še danes!