使用 JavaScript 和 Workbox 構建漸進式 Web 應用 (PWA)


近年來,漸進式 Web 應用 (PWA) 越來越流行,因為它能夠在各種裝置和網路條件下提供卓越的使用者體驗。PWA 結合了 Web 應用和原生應用的最佳特性,為使用者提供快速、可靠且引人入勝的體驗。在本文中,我們將探討如何使用 JavaScript 和 Workbox(一個強大的庫,簡化了向 Web 應用新增離線支援和快取的過程)來構建 PWA。

瞭解漸進式 Web 應用 (PWA)

漸進式 Web 應用是一種利用現代 Web 技術為使用者提供類似原生應用體驗的 Web 應用。PWA 旨在無論網路狀況如何,都能保持可靠、快速和引人入勝。它們可以安裝在使用者的主螢幕上並在離線狀態下工作,讓它們感覺像是一個原生應用。

漸進式 Web 應用的關鍵特性

  • 自適應 − PWA 能夠適應不同的螢幕尺寸和方向,確保跨裝置的一致使用者體驗。

  • 漸進增強 − PWA 可在任何瀏覽器上執行,無論其是否支援高階功能。

  • 連線無關性 − PWA 透過快取資源和資料,可以在離線或低質量網路下執行。

  • 類似應用的體驗 − PWA 提供沉浸式、類似應用的介面,具有流暢的導航和手勢操作。

  • 推送通知 − PWA 可以向用戶傳送通知,即使他們沒有積極使用應用程式,也能保持使用者的參與度。

  • 安全 − PWA 透過 HTTPS 提供服務,確保資料完整性並保護使用者的隱私。

使用 JavaScript 和 Workbox 構建 PWA

Workbox 是 Google 開發的一個 JavaScript 庫,它簡化了向 Web 應用新增離線支援和快取的過程。它提供了一組強大的 API 和策略來處理服務工作者、快取策略和後臺同步。讓我們看看如何使用 Workbox 來構建 PWA。

步驟 1:設定專案

首先,為您的專案建立一個新目錄,並透過執行以下命令將其初始化為 npm 專案:

npm init -y

步驟 2:安裝 Workbox

使用 npm 安裝 Workbox:

npm install workbox-core workbox-routing workbox-strategies

步驟 3:建立服務工作者

建立一個名為 service-worker.js 的新 JavaScript 檔案,並新增以下程式碼:

importScripts('https://storage.googleapis.com/workbox-cdn/releases/6.2.0/workbox-sw.js');

// Precaching assets
workbox.precaching.precacheAndRoute([
  { url: '/index.html', revision: '12345' },
  { url: '/styles.css', revision: '54321' },
  { url: '/script.js', revision: '98765' }
]);

// Caching strategies
workbox.routing.registerRoute(
  ({request}) => request.destination === 'image',
  new workbox.strategies.CacheFirst()
);

workbox.routing.registerRoute(
  ({request}) => request.destination === 'document',
  new workbox.strategies.NetworkFirst()
);

workbox.routing.registerRoute(
  ({request}) => request.destination === 'manifest',
  new workbox.strategies.StaleWhileRevalidate()
);

解釋

在上面的程式碼中,我們使用 importScripts 函式匯入 Workbox。然後,我們使用 workbox.precaching.precacheAndRoute 方法定義預快取資產,該方法接受要快取的 URL 陣列及其修訂號。

接下來,我們使用 workbox.routing.registerRoute 方法定義快取策略。在這個例子中,我們有三種不同的策略:CacheFirst 用於影像,NetworkFirst 用於文件,StaleWhileRevalidate 用於清單。

步驟 4:註冊服務工作者

在您的主要 JavaScript 檔案中,透過新增以下程式碼註冊服務工作者:

if ('serviceWorker' in navigator) {
   window.addEventListener('load', () => {
      navigator.serviceWorker.register('/service-worker.js')
      .then(registration => {
         console.log('Service Worker registered:', registration);
      })
      .catch(error => {
         console.log('Service Worker registration failed:', error);
      });
   });
}

解釋

在註冊程式碼中,我們檢查瀏覽器是否支援服務工作者(使用 'serviceWorker' in navigator)。如果支援,我們使用 navigator.serviceWorker.register('/service-worker.js') 註冊服務工作者。註冊返回一個 promise,當服務工作者成功註冊時,該 promise 將解析。

成功註冊後,控制檯將記錄一條訊息,指示服務工作者已成功註冊。如果發生錯誤,則會記錄錯誤訊息。

步驟 5:構建和執行 PWA

要構建和執行 PWA,可以使用簡單的 HTTP 伺服器,如 http-server 或 live-server。使用 npm 全域性安裝它,然後在您的專案目錄中執行以下命令:

live-server

解釋

在上面的程式碼中,我們使用 importScripts 函式匯入 Workbox。然後,我們使用 workbox.precaching.precacheAndRoute 方法定義預快取資產,該方法接受要快取的 URL 陣列及其修訂號。

接下來,我們使用 workbox.routing.registerRoute 方法定義快取策略。在這個例子中,我們有三種不同的策略:CacheFirst 用於影像,NetworkFirst 用於文件,StaleWhileRevalidate 用於清單。

在註冊程式碼中,我們檢查瀏覽器是否支援服務工作者(使用 'serviceWorker' in navigator)。如果支援,我們使用 navigator.serviceWorker.register('/service-worker.js') 註冊服務工作者。註冊返回一個 promise,當服務工作者成功註冊時,該 promise 將解析。

成功註冊後,控制檯將記錄一條訊息,指示服務工作者已成功註冊。如果發生錯誤,則會記錄錯誤訊息。

結論

漸進式 Web 應用提供了一種引人注目的方式,可以在不同的裝置和網路條件下為使用者提供快速、可靠和引人入勝的體驗。透過利用 JavaScript 和 Workbox 的強大功能,開發人員可以輕鬆地向其 Web 應用新增離線支援和快取功能。Workbox 提供了一套全面的 API 和策略來簡化構建 PWA 的過程。

在本文中,我們探討了 PWA 的關鍵特性,討論了它們提供的優勢,並提供了使用 JavaScript 和 Workbox 構建 PWA 的分步指南。透過遵循這些指南,開發人員可以建立提供類似原生應用體驗的 PWA,使他們的應用更易於訪問,併為使用者提供更引人入勝的體驗。

更新於:2023年7月24日

492 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告