Suomi

Kattava opas progressiivisten web-sovellusten (PWA) toteuttamiseen, joka kattaa peruskäsitteet, service workerit, manifestit, push-ilmoitukset ja parhaat käytännöt globaalille yleisölle.

Progressiiviset Web-sovellukset: Täydellinen käyttöönottopikaopas globaaleille kehittäjille

Progressiiviset Web-sovellukset (PWA:t) edustavat paradigman muutosta web-kehityksessä, hämärtäen perinteisten verkkosivustojen ja natiivien mobiilisovellusten rajoja. Ne tarjoavat parannetun käyttäjäkokemuksen, jolle on ominaista luotettavuus, asennettavuus ja sitouttaminen, mikä tekee niistä ihanteellisen ratkaisun globaalin yleisön tavoittamiseen, jolla on vaihteleva Internet-yhteys ja laiteominaisuudet.

Mitä ovat progressiiviset web-sovellukset?

PWA:t ovat web-sovelluksia, jotka hyödyntävät nykyaikaisia web-standardeja tarjotakseen natiivisovelluksen kaltaisen kokemuksen. Ne ovat:

Toisin kuin natiivisovellukset, PWA:t ovat löydettävissä hakukoneiden kautta, helposti jaettavissa URL-osoitteiden kautta, eivätkä vaadi käyttäjiä menemään sovelluskauppojen kautta. Tämä tekee niistä helpon ja kustannustehokkaan ratkaisun yrityksille, jotka haluavat laajentaa ulottuvuuttaan.

PWA:iden taustalla olevat perus teknologiat

PWA:t on rakennettu kolmen perus teknologian varaan:

1. HTTPS

Turvallisuus on ensiarvoisen tärkeää. PWA:t täytyy tarjoilla HTTPS:n kautta peukaloinnin estämiseksi ja tietojen eheyden varmistamiseksi. Tämä on perusvaatimus service workereiden toimimiselle.

2. Service Workerit

Service workerit ovat JavaScript-tiedostoja, jotka suoritetaan taustalla, erillään pääselainketjusta. Ne toimivat välityspalvelimina web-sovelluksen ja verkon välillä, mahdollistaen esimerkiksi seuraavat ominaisuudet:

Service workerin elinkaari: Service workerin elinkaaren (rekisteröinti, asennus, aktivointi, päivitykset) ymmärtäminen on ratkaisevan tärkeää tehokkaan PWA-käyttöönoton kannalta. Virheellinen hallinta voi johtaa välimuistiongelmiin ja odottamattomaan toimintaan. Käsittelemme päivityksiä tarkemmin myöhemmin.

3. Web-sovellusmanifesti

Web-sovellusmanifesti on JSON-tiedosto, joka tarjoaa metatietoja PWA:sta, kuten:

Käyttöönotto vaiheet: Yksinkertaisen PWA:n rakentaminen

Käydään läpi yksinkertaisen PWA:n rakentamisen vaiheet:

Vaihe 1: Määritä HTTPS

Varmista, että verkkosivustosi tarjoillaan HTTPS:n kautta. Voit saada ilmaisen SSL-varmenteen Let's Encrypt -palvelusta.

Vaihe 2: Luo Web-sovellusmanifesti (manifest.json)

Luo tiedosto nimeltä `manifest.json` ja lisää seuraava koodi:


{
  "name": "Oma Yksinkertainen 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"
}

Korvaa `icon-192x192.png` ja `icon-512x512.png` todellisilla kuvaketiedostoillasi. Sinun on luotava nämä kuvakkeet eri kokoisina. Online-työkalut, kuten Real Favicon Generator, voivat auttaa tässä.

Vaihe 3: Linkitä manifestitiedosto HTML-tiedostossasi

Lisää seuraava rivi `index.html`-tiedostosi `<head>`-osioon:


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

Vaihe 4: Luo Service Worker (service-worker.js)

Luo tiedosto nimeltä `service-worker.js` ja lisää seuraava koodi:


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) {
  // Suorita asennusvaiheet
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function(cache) {
        console.log('Cache avattu');
        return cache.addAll(urlsToCache);
      })
  );
});

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request)
      .then(function(response) {
        // Välimuistihitti - palauta vastaus
        if (response) {
          return response;
        }

        // TÄRKEÄÄ: Jos olemme tässä, se tarkoittaa, että pyyntöä ei löytynyt välimuistista.
        return fetch(event.request).then(
          function(response) {
            // Tarkista, saimmeko kelvollisen vastauksen
            if(!response || response.status !== 200 || response.type !== 'basic') {
              return response;
            }

            // TÄRKEÄÄ: Kloonaa vastaus. Vastaus on virta
            // ja koska haluamme selaimen kuluttavan vastauksen
            // sekä välimuistin kuluttavan vastauksen, meidän on
            // kloonattava se, jotta meillä on kaksi riippumatonta kopiota.
            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);
          }
        })
      );
    })
  );
});

Tämä service worker tallentaa määritetyt tiedostot välimuistiin asennuksen aikana ja palvelee niitä välimuistista, kun käyttäjä on offline-tilassa tai hitaassa verkossa.

Vaihe 5: Rekisteröi service worker JavaScriptissasi

Lisää seuraava koodi `script.js`-tiedostoosi:


if ('serviceWorker' in navigator) {
  window.addEventListener('load', function() {
    navigator.serviceWorker.register('/service-worker.js')
      .then(function(registration) {
        // Rekisteröinti onnistui
        console.log('ServiceWorker-rekisteröinti onnistui ja soveltamisala: ', registration.scope);
      },
      function(err) {
        // rekisteröinti epäonnistui :( 
        console.log('ServiceWorker-rekisteröinti epäonnistui: ', err);
      });
  });
}

Tämä koodi tarkistaa, tukeeko selain service workereita ja rekisteröi `service-worker.js`-tiedoston.

Vaihe 6: Testaa PWA:si

Avaa verkkosivustosi selaimessa, joka tukee PWA:ita (esim. Chrome, Firefox, Safari). Avaa kehittäjätyökalut ja tarkista "Sovellus"-välilehti nähdäksesi, onko service worker rekisteröity oikein ja onko manifestitiedosto ladattu.

Sinun pitäisi nyt nähdä "Lisää aloitusnäyttöön" -kehotus selaimessasi. Napsauttamalla tätä kehotetta asennat PWA:n laitteellesi.

Edistyneet PWA-ominaisuudet ja huomioitavia asioita

Push-ilmoitukset

Push-ilmoitukset ovat tehokas tapa sitouttaa käyttäjiä uudelleen PWA:siin. Push-ilmoitusten toteuttamiseksi tarvitset:

  1. Hanki Push API -avain: Sinun on käytettävä palvelua, kuten Firebase Cloud Messaging (FCM) tai vastaavaa palvelua push-ilmoitusten käsittelyyn. Tämä edellyttää tilin luomista ja API-avaimen hankkimista.
  2. Tilaa käyttäjä: PWA:ssasi sinun on pyydettävä käyttäjältä lupa push-ilmoitusten vastaanottamiseen ja sitten tilattava heidät push-palveluusi.
  3. Käsittele Push-tapahtumat: Service workerissasi sinun on kuunneltava push-tapahtumia ja näytettävä ilmoitus käyttäjälle.

Esimerkki (Yksinkertaistettu - Firebasen käyttö):

Service workerissasi `service-worker.js`:


// Tuo Firebase-kirjastot
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');

// Alusta 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] Vastaanotettu taustaviesti ', payload);
  // Mukauta ilmoitus tähän
  const notificationTitle = 'Taustaviestin otsikko';
  const notificationOptions = {
    body: 'Taustaviestin runko.',
    icon: '/icon-512x512.png'
  };

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

Tärkeää: Korvaa paikkamerkkiarvot todellisilla Firebase-määrityksilläsi. Tämä esimerkki osoittaa taustaviestien käsittelyn. Sinun on toteutettava tilauslogiikka pää-JavaScript-koodissasi.

Taustasykronointi

Taustasykronointi mahdollistaa PWA:n suorittaa tehtäviä myös silloin, kun käyttäjä on offline-tilassa. Tämä on hyödyllistä seuraavissa tilanteissa:

Jos haluat käyttää taustasykronointia, sinun on rekisteröidyttävä `sync`-tapahtumaan service workerissasi ja käsiteltävä synkronointilogiikka.

Offline-tuen strategiat

PWA:ssasi on useita strategioita offline-tuen tarjoamiseen:

Paras strategia riippuu sovelluksesi erityisvaatimuksista.

PWA-päivitykset

Service worker -päivitykset ovat keskeinen osa PWA:n ylläpitoa. Kun selain havaitsee muutoksen `service-worker.js`-tiedostossasi (jopa yhden tavun muutos), se käynnistää päivitysprosessin. Uusi service worker asennetaan taustalla, mutta se aktivoituu vasta seuraavan kerran, kun käyttäjä vierailee PWA:ssasi tai kaikki vanhan service workerin hallitsemat olemassa olevat välilehdet suljetaan.

Voit pakottaa välittömän päivityksen kutsumalla `self.skipWaiting()` uudessa service workerin `install`-tapahtumassa ja `clients.claim()` `activate`-tapahtumassa. Tämä voi kuitenkin häiritä käyttäjän kokemusta, joten käytä sitä varoen.

SEO-näkökohdat PWA:lle

PWA:t ovat yleensä SEO-ystävällisiä, koska ne ovat pohjimmiltaan verkkosivuja. Muutama asia on kuitenkin pidettävä mielessä:

Cross-Browser -yhteensopivuus

Vaikka PWA:t perustuvat web-standardeihin, selaintuki voi vaihdella. On tärkeää testata PWA:si eri selaimissa ja laitteissa varmistaaksesi, että se toimii oikein. Käytä ominaisuuksien tunnistusta heikentääksesi toiminnallisuutta hienovaraisesti selaimissa, jotka eivät tue tiettyjä ominaisuuksia.

PWA:iden virheenkorjaus

PWA:iden virheenkorjaus voi olla haastavaa service workereiden asynkronisen luonteen vuoksi. Käytä selaimen kehittäjätyökaluja service workerin rekisteröinnin, välimuistiin tallentamisen ja verkkopyyntöjen tarkasteluun. Kiinnitä huomiota konsolilokeihin ja virheilmoituksiin.

PWA-esimerkkejä eri puolilta maailmaa

Lukuisat yritykset maailmanlaajuisesti ovat onnistuneesti toteuttaneet PWA:ita. Tässä on muutamia monipuolisia esimerkkejä:

Johtopäätös: Verkon tulevaisuuden omaksuminen

Progressiiviset Web-sovellukset tarjoavat houkuttelevan vaihtoehdon perinteisille verkkosivustoille ja natiivisovelluksille. Ne tarjoavat erinomaisen käyttäjäkokemuksen, parannetun suorituskyvyn ja lisääntyneen sitoutumisen, mikä tekee niistä arvokkaan työkalun yrityksille, jotka haluavat tavoittaa globaalin yleisön. Ymmärtämällä peruskäsitteet ja noudattamalla tässä oppaassa esitettyjä käyttöönottovaiheita kehittäjät voivat luoda PWA:ita, jotka ovat luotettavia, asennettavia ja kiinnostavia, mikä tarjoaa kilpailuetua nykypäivän mobiilipainotteisessa maailmassa. Omaksu verkon tulevaisuus ja aloita omien Progressiivisten Web-sovellustesi rakentaminen jo tänään!