masalibの日記

システム開発、運用と猫の写真ブログです

PWA:Workboxでサービスワーカー導入編

f:id:masalib:20180810173837p:plain

PWAについて調べたり、実際に写経した時の自分用のメモです
サービスワーカーの概要は過去記事を参考にしてください

masalib.hatenablog.com

google先生のライブラリーのWorkboxを使って導入しました
はっきりいってPWAをおこなうならこのWorkboxしかないと思う

Workboxとは

Googleが提供するオープンなライブラリのコレクションで、サービスワーカーファイルの生成に使用できます。 1からサービスワーカーを記載するは大変なのでGoogle先生が用意したライブラリーを使って簡単に作成できる。

  • 画像キャッシュする場合の例
workbox.routing.registerRoute(
  /\.(?:js|css)$/,
  workbox.strategies.staleWhileRevalidate(),
); 

これだけでキャッシュしてくれます

機能としては

  • プレキャッシング(Precaching)
  • Runtimeキャッシング
  • ルーティングのリクエス
  • ストレージ
  • バックグラウンド同期
  • 便利なデバッグ
  • sw-precacheおよびsw-toolboxより優れた柔軟性と機能セット
  • Googleアナリティクス対応

便利機能がありすぎる感じです。さすがgoogle先生です。

環境構築

前回と同じようにサンプルから環境をつくる

git clone https://github.com/webopt/ch9-service-workers.git
cd ch9-service-workers
npm install
node http.js

起動した画面はこちらになる
http://localhost:8080/
f:id:masalib:20180811010422j:plain

この時点では何もサービスワーカーが動いていない f:id:masalib:20180811010446j:plain

ソースの構成は以下のとおりで こちらのsw-install.jsとsw.jsを触っていく f:id:masalib:20180811010503j:plain

serviceWorker対応チェック

serviceWorkerが対応しているのか確認する
これも前回と同じです

  • ソース

  • 実行結果
    f:id:masalib:20180811165117j:plain

実際にサポートされているのがわかったので次はインストールする。
window.addEventListenerのloadイベントをとって関数にわたす(アロー関数)
navigator.serviceWorkerのオブジェクトを利用してインストールする
成功した場合はregにわたされる。失敗した場合はcatchする

  • ソース

Workboxのインストール

2018年8月12日時点で公式のサイトに書いてある内容です。たぶんバージョンアップが頻繁におこなわれているので、導入する場合はバージョンを確認してください

  • ソース

  • 実行結果
    f:id:masalib:20180812135307j:plain

Workboxのキャッシュの設定

  • ソース

  • 実行結果
    f:id:masalib:20180812212356j:plain
    f:id:masalib:20180812212418j:plain

終わり(・∀・)
これでオフラインも対応できる。前回のソースが悲しくなるwww

感想

便利すぎて使いこなせていない気がする。PWAをおこなうならこのWorkboxしかない ネットワークが使えない時にGoogleアナリティクスの通知をキューにためる機能とか必須だと思われるのでマスターしたいと思う。