Slovenščina

Naučite se uporabljati servisne delavce za ustvarjanje spletnih aplikacij po načelu 'brez povezave najprej', ki so hitre, zanesljive in privlačne za uporabnike.

Servisni delavci: Izdelava spletnih aplikacij po načelu 'brez povezave najprej'

V današnjem svetu uporabniki pričakujejo, da bodo spletne aplikacije hitre, zanesljive in dostopne, tudi ko je omrežna povezava omejena ali ni na voljo. Tu nastopi koncept zasnove "brez povezave najprej" (offline-first). Servisni delavci so zmogljiva tehnologija, ki razvijalcem omogoča izdelavo spletnih aplikacij, ki brezhibno delujejo brez povezave in tako zagotavljajo vrhunsko uporabniško izkušnjo.

Kaj so servisni delavci?

Servisni delavec je JavaScript datoteka, ki se izvaja v ozadju, ločeno od glavne niti brskalnika. Deluje kot posrednik (proxy) med spletno aplikacijo in omrežjem, prestreza omrežne zahteve in upravlja predpomnjenje. Servisni delavci lahko opravljajo naloge, kot so:

Pomembno je, da servisne delavce nadzoruje brskalnik, ne spletna stran. To jim omogoča delovanje, tudi ko uporabnik zapre zavihek ali okno brskalnika.

Zakaj 'brez povezave najprej'?

Izdelava spletne aplikacije po načelu "brez povezave najprej" prinaša številne prednosti:

Kako delujejo servisni delavci

Življenjski cikel servisnega delavca je sestavljen iz več faz:

  1. Registracija: Servisni delavec se registrira v brskalniku, pri čemer se določi obseg aplikacije, ki jo bo nadzoroval.
  2. Namestitev: Servisni delavec se namesti, med tem postopkom pa običajno predpomni statične vire.
  3. Aktivacija: Servisni delavec se aktivira in prevzame nadzor nad spletno aplikacijo. To lahko vključuje odjavo starih servisnih delavcev in čiščenje starih predpomnilnikov.
  4. Stanje mirovanja: Servisni delavec ostane v stanju mirovanja in čaka na omrežne zahteve ali druge dogodke.
  5. Prestrezanje (Fetch): Ko pride do omrežne zahteve, jo servisni delavec prestreže in lahko postreže vsebino iz predpomnilnika ali pa pridobi vir iz omrežja.

Implementacija načela 'brez povezave najprej' s servisnimi delavci: Vodnik po korakih

Tu je osnovni primer, kako implementirati funkcionalnost "brez povezave najprej" z uporabo servisnih delavcev:

1. korak: Registracija servisnega delavca

V vaši glavni JavaScript datoteki (npr., `app.js`):


if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('/service-worker.js')
    .then(function(registration) {
      console.log('Servisni delavec registriran z obsegom:', registration.scope);
    })
    .catch(function(error) {
      console.log('Registracija servisnega delavca ni uspela:', error);
    });
}

Ta koda preveri, ali brskalnik podpira servisne delavce, in registrira datoteko `service-worker.js`. Obseg (scope) določa, katere URL-je bo servisni delavec nadzoroval.

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

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


const CACHE_NAME = 'my-site-cache-v1';
const urlsToCache = [
  '/',
  '/index.html',
  '/style.css',
  '/app.js',
  '/images/logo.png'
];

self.addEventListener('install', function(event) {
  // Izvedba korakov namestitve
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function(cache) {
        console.log('Predpomnilnik odprt');
        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: Klonirajte zahtevo.
        // Zahteva je tok (stream) in jo je mogoče porabiti samo enkrat. Ker jo porabimo
        // enkrat s predpomnilnikom in enkrat z brskalnikom za pridobivanje (fetch), moramo klonirati odgovor.
        var fetchRequest = event.request.clone();

        return fetch(fetchRequest).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 (stream) in ga je treba porabiti samo enkrat.
            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 koda naredi naslednje:

3. korak: Preizkusite delovanje brez povezave

Za preizkus delovanja brez povezave lahko uporabite razvijalska orodja brskalnika. V Chromu odprite DevTools, pojdite na zavihek "Application" in izberite "Service Workers." Nato lahko simulirate način brez povezave z označitvijo polja "Offline".

Napredne tehnike servisnih delavcev

Ko imate osnovno razumevanje servisnih delavcev, lahko raziščete naprednejše tehnike za izboljšanje vaše aplikacije po načelu "brez povezave najprej":

Strategije predpomnjenja

Obstaja več strategij predpomnjenja, ki jih lahko uporabite, odvisno od vrste vira in zahtev vaše aplikacije:

Izbira prave strategije predpomnjenja je odvisna od specifičnega vira in zahtev vaše aplikacije. Na primer, statične vire, kot so slike in CSS datoteke, je pogosto najbolje posredovati s strategijo "najprej predpomnilnik", medtem ko bi dinamična vsebina lahko imela koristi od strategije "najprej omrežje" ali "predpomnilnik, nato omrežje".

Sinhronizacija v ozadju

Sinhronizacija v ozadju vam omogoča, da odložite naloge, dokler uporabnik nima stabilne omrežne povezave. To je uporabno za naloge, kot sta oddajanje obrazcev ali nalaganje datotek. Na primer, uporabnik na oddaljenem območju Indonezije lahko izpolni obrazec, ko je brez povezave. Servisni delavec lahko nato počaka, da je povezava na voljo, preden pošlje podatke.

Potisna obvestila

Servisne delavce lahko uporabimo za pošiljanje potisnih obvestil uporabnikom, tudi ko aplikacija ni odprta. To se lahko uporabi za ponovno pritegnitev uporabnikov in zagotavljanje pravočasnih posodobitev. Pomislite na novičarsko aplikacijo, ki uporabnikom v realnem času pošilja opozorila o izrednih novicah, ne glede na to, ali aplikacija aktivno teče.

Workbox

Workbox je zbirka JavaScript knjižnic, ki olajšajo izdelavo servisnih delavcev. Zagotavlja abstrakcije za pogoste naloge, kot so predpomnjenje, usmerjanje in sinhronizacija v ozadju. Uporaba Workboxa lahko poenostavi kodo vašega servisnega delavca in jo naredi bolj vzdržljivo. Mnoga podjetja zdaj uporabljajo Workbox kot standardno komponento pri razvoju PWA in izkušenj po načelu "brez povezave najprej".

Premisleki za globalno občinstvo

Pri izdelavi spletnih aplikacij po načelu "brez povezave najprej" za globalno občinstvo je pomembno upoštevati naslednje dejavnike:

Primeri aplikacij po načelu 'brez povezave najprej'

Več priljubljenih spletnih aplikacij je uspešno implementiralo funkcionalnost "brez povezave najprej" z uporabo servisnih delavcev:

Zaključek

Servisni delavci so zmogljivo orodje za izdelavo spletnih aplikacij po načelu "brez povezave najprej", ki so hitre, zanesljive in privlačne. S predpomnjenjem virov, prestrezanjem omrežnih zahtev in obravnavanjem nalog v ozadju lahko servisni delavci zagotovijo vrhunsko uporabniško izkušnjo, tudi ko je omrežna povezljivost omejena ali ni na voljo. Ker dostop do omrežja po svetu ostaja nedosleden, je osredotočanje na zasnove "brez povezave najprej" ključnega pomena za zagotavljanje pravičnega dostopa do informacij in storitev na spletu.

S sledenjem korakom, opisanim v tem vodniku, in upoštevanjem zgoraj navedenih dejavnikov lahko ustvarite spletne aplikacije, ki brezhibno delujejo brez povezave in zagotavljajo čudovito izkušnjo za uporabnike po vsem svetu. Sprejmite moč servisnih delavcev in gradite prihodnost spleta – prihodnost, v kateri je splet dostopen vsem, povsod, ne glede na njihovo omrežno povezavo.