Latviešu

Visaptveroša rokasgrāmata par progresīvo tīmekļa lietotņu (PWA) ieviešanu, kas aptver pamatjēdzienus, servisa darbiniekus, manifesta failus un labāko praksi.

Progresīvās tīmekļa lietotnes: Pilnīga ieviešanas rokasgrāmata globāliem izstrādātājiem

Progresīvās tīmekļa lietotnes (PWA) iezīmē paradigmas maiņu tīmekļa izstrādē, izdzēšot robežas starp tradicionālajām tīmekļa vietnēm un natīvajām mobilajām lietotnēm. Tās piedāvā uzlabotu lietotāja pieredzi, ko raksturo uzticamība, instalējamība un iesaiste, padarot tās par ideālu risinājumu, lai sasniegtu globālu auditoriju ar dažādu interneta savienojamību un ierīču iespējām.

Kas ir progresīvās tīmekļa lietotnes?

PWA ir tīmekļa lietotnes, kas izmanto mūsdienu tīmekļa standartus, lai nodrošinātu natīvai lietotnei līdzīgu pieredzi. Tās ir:

Atšķirībā no natīvajām lietotnēm, PWA ir atrodamas meklētājprogrammās, viegli kopīgojamas ar URL un neprasa lietotājiem iziet cauri lietotņu veikaliem. Tas padara tās par pieejamu un rentablu risinājumu uzņēmumiem, kas vēlas paplašināt savu sasniedzamību.

PWA pamatā esošās tehnoloģijas

PWA ir veidotas uz trīs pamattehnoloģijām:

1. HTTPS

Drošība ir vissvarīgākā. PWA obligāti ir jānodrošina, izmantojot HTTPS, lai novērstu noklausīšanos un nodrošinātu datu integritāti. Šī ir pamatprasība, lai servisa darbinieki varētu funkcionēt.

2. Servisa darbinieki

Servisa darbinieki ir JavaScript faili, kas darbojas fonā, atsevišķi no galvenā pārlūkprogrammas pavediena. Tie darbojas kā starpniekserveri (proxy servers) starp tīmekļa lietotni un tīklu, nodrošinot tādas funkcijas kā:

Servisa darbinieka dzīves cikls: Izpratne par servisa darbinieka dzīves ciklu (reģistrācija, instalēšana, aktivizēšana, atjauninājumi) ir ļoti svarīga efektīvai PWA ieviešanai. Nepareiza pārvaldība var izraisīt kešatmiņas problēmas un neparedzētu uzvedību. Sīkāk par atjauninājumiem mēs runāsim vēlāk.

3. Tīmekļa lietotnes manifests

Tīmekļa lietotnes manifests ir JSON fails, kas sniedz metadatus par PWA, piemēram:

Ieviešanas soļi: Vienkāršas PWA izveide

Apskatīsim vienkāršas PWA izveides soļus:

1. solis: Iestatiet HTTPS

Nodrošiniet, ka jūsu vietne tiek pasniegta, izmantojot HTTPS. Jūs varat iegūt bezmaksas SSL sertifikātu no Let's Encrypt.

2. solis: Izveidojiet tīmekļa lietotnes manifestu (manifest.json)

Izveidojiet failu ar nosaukumu `manifest.json` un pievienojiet šādu kodu:


{
  "name": "My Simple 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"
}

Aizstājiet `icon-192x192.png` un `icon-512x512.png` ar saviem faktiskajiem ikonu failiem. Jums būs jāģenerē šīs ikonas dažādos izmēros. Šim nolūkam var palīdzēt tiešsaistes rīki, piemēram, Real Favicon Generator.

3. solis: Saistiet manifesta failu savā HTML

Pievienojiet šādu rindiņu sava `index.html` faila `` sadaļai:


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

4. solis: Izveidojiet servisa darbinieku (service-worker.js)

Izveidojiet failu ar nosaukumu `service-worker.js` un pievienojiet šādu kodu:


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) {
  // Veiciet instalēšanas soļus
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(function(cache) {
        console.log('Kešatmiņa atvērta');
        return cache.addAll(urlsToCache);
      })
  );
});

self.addEventListener('fetch', function(event) {
  event.respondWith(
    caches.match(event.request)
      .then(function(response) {
        // Trāpījums kešatmiņā - atgriezt atbildi
        if (response) {
          return response;
        }

        // SVARĪGI: Ja mēs esam šeit, tas nozīmē, ka pieprasījums netika atrasts kešatmiņā.
        return fetch(event.request).then(
          function(response) {
            // Pārbaudiet, vai saņēmām derīgu atbildi
            if(!response || response.status !== 200 || response.type !== 'basic') {
              return response;
            }

            // SVARĪGI: Klonējiet atbildi. Atbilde ir straume,
            // un, tā kā mēs vēlamies, lai pārlūkprogramma patērētu atbildi,
            // kā arī kešatmiņa patērētu atbildi, mums tā
            // ir jāklonē, lai mums būtu divas neatkarīgas kopijas.
            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);
          }
        })
      );
    })
  );
});

Šis servisa darbinieks instalēšanas laikā kešo norādītos failus un pasniedz tos no kešatmiņas, kad lietotājs ir bezsaistē vai lēnā tīklā.

5. solis: Reģistrējiet servisa darbinieku savā JavaScript

Pievienojiet šādu kodu savam `script.js` failam:


if ('serviceWorker' in navigator) {
  window.addEventListener('load', function() {
    navigator.serviceWorker.register('/service-worker.js')
      .then(function(registration) {
        // Reģistrācija bija veiksmīga
        console.log('ServiceWorker reģistrācija veiksmīga ar tvērumu: ', registration.scope);
      },
      function(err) {
        // reģistrācija neizdevās :(
        console.log('ServiceWorker reģistrācija neizdevās: ', err);
      });
  });
}

Šis kods pārbauda, vai pārlūkprogramma atbalsta servisa darbiniekus, un reģistrē `service-worker.js` failu.

6. solis: Pārbaudiet savu PWA

Atveriet savu vietni pārlūkprogrammā, kas atbalsta PWA (piem., Chrome, Firefox, Safari). Atveriet izstrādātāju rīkus un pārbaudiet cilni "Application", lai redzētu, vai servisa darbinieks ir pareizi reģistrēts un manifesta fails ir ielādēts.

Tagad pārlūkprogrammā vajadzētu redzēt uzvedni "Pievienot sākuma ekrānam". Noklikšķinot uz šīs uzvednes, PWA tiks instalēta jūsu ierīcē.

Papildu PWA funkcijas un apsvērumi

Pašpiegādes paziņojumi (Push Notifications)

Pašpiegādes paziņojumi ir spēcīgs veids, kā atkārtoti iesaistīt lietotājus jūsu PWA. Lai ieviestu pašpiegādes paziņojumus, jums būs nepieciešams:

  1. Iegūt Push API atslēgu: Jums būs jāizmanto pakalpojums, piemēram, Firebase Cloud Messaging (FCM) vai līdzīgs pakalpojums, lai apstrādātu pašpiegādes paziņojumus. Tas prasa izveidot kontu un iegūt API atslēgu.
  2. Abonēt lietotāju: Jūsu PWA jums būs jāpieprasa atļauja no lietotāja saņemt pašpiegādes paziņojumus un pēc tam jāabonē viņš jūsu pašpiegādes pakalpojumam.
  3. Apstrādāt pašpiegādes notikumus: Jūsu servisa darbiniekā jums būs jāklausās pašpiegādes notikumi un jāparāda paziņojums lietotājam.

Piemērs (Vienkāršots - izmantojot Firebase):

Jūsu `service-worker.js` failā:


// Importējiet Firebase bibliotēkas
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');

// Inicializējiet 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] Saņemts fona ziņojums ', payload);
  // Pielāgojiet paziņojumu šeit
  const notificationTitle = 'Fona ziņojuma virsraksts';
  const notificationOptions = {
    body: 'Fona ziņojuma teksts.',
    icon: '/icon-512x512.png'
  };

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

Svarīgi: Aizstājiet viettura vērtības ar savu faktisko Firebase konfigurāciju. Šis piemērs demonstrē fona ziņojumu apstrādi. Jums būs jāievieš abonēšanas loģika galvenajā JavaScript kodā.

Fona sinhronizācija

Fona sinhronizācija ļauj jūsu PWA veikt uzdevumus pat tad, kad lietotājs ir bezsaistē. Tas ir noderīgi šādos scenārijos:

Lai izmantotu fona sinhronizāciju, jums būs jāreģistrējas `sync` notikumam savā servisa darbiniekā un jāapstrādā sinhronizācijas loģika.

Bezsaistes atbalsta stratēģijas

Ir vairākas stratēģijas bezsaistes atbalsta nodrošināšanai jūsu PWA:

Labākā stratēģija ir atkarīga no jūsu lietotnes specifiskajām prasībām.

PWA atjauninājumi

Servisa darbinieku atjauninājumi ir būtiska PWA uzturēšanas daļa. Kad pārlūkprogramma atklāj izmaiņas jūsu `service-worker.js` failā (pat vienu baita izmaiņu), tā iedarbina atjaunināšanas procesu. Jaunais servisa darbinieks tiek instalēts fonā, bet tas nekļūst aktīvs, kamēr lietotājs nākamreiz neapmeklē jūsu PWA vai kamēr nav aizvērtas visas esošās cilnes, kuras kontrolēja vecais servisa darbinieks.

Jūs varat piespiest tūlītēju atjauninājumu, izsaucot `self.skipWaiting()` jaunā servisa darbinieka `install` notikumā un `clients.claim()` `activate` notikumā. Tomēr tas var traucēt lietotāja pieredzi, tāpēc izmantojiet to piesardzīgi.

SEO apsvērumi PWA

PWA parasti ir SEO draudzīgas, jo tās būtībā ir tīmekļa vietnes. Tomēr ir jāpatur prātā dažas lietas:

Starppārlūku saderība

Lai gan PWA ir balstītas uz tīmekļa standartiem, pārlūkprogrammu atbalsts var atšķirties. Ir svarīgi pārbaudīt savu PWA dažādās pārlūkprogrammās un ierīcēs, lai nodrošinātu tās pareizu darbību. Izmantojiet funkciju noteikšanu, lai graciozi degradētu funkcionalitāti pārlūkprogrammās, kas neatbalsta noteiktas funkcijas.

PWA atkļūdošana

PWA atkļūdošana var būt sarežģīta servisa darbinieku asinhronā rakstura dēļ. Izmantojiet pārlūkprogrammas izstrādātāju rīkus, lai pārbaudītu servisa darbinieka reģistrāciju, kešošanu un tīkla pieprasījumus. Pievērsiet īpašu uzmanību konsoles žurnāliem un kļūdu ziņojumiem.

PWA piemēri visā pasaulē

Daudzi uzņēmumi visā pasaulē ir veiksmīgi ieviesuši PWA. Šeit ir daži dažādi piemēri:

Noslēgums: Tīmekļa nākotnes pieņemšana

Progresīvās tīmekļa lietotnes piedāvā pārliecinošu alternatīvu tradicionālajām vietnēm un natīvajām mobilajām lietotnēm. Tās nodrošina izcilu lietotāja pieredzi, uzlabotu veiktspēju un lielāku iesaisti, padarot tās par vērtīgu rīku uzņēmumiem, kas vēlas sasniegt globālu auditoriju. Izprotot pamatjēdzienus un sekojot šajā rokasgrāmatā izklāstītajiem ieviešanas soļiem, izstrādātāji var izveidot PWA, kas ir uzticamas, instalējamas un saistošas, nodrošinot konkurences priekšrocības mūsdienu mobilajā pasaulē. Pieņemiet tīmekļa nākotni un sāciet veidot savas progresīvās tīmekļa lietotnes jau šodien!