PWAについて調べたり、実際に写経した時の自分用のメモです
サービスワーカーの概要は過去記事を参考にしてください
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/
この時点では何もサービスワーカーが動いていない
ソースの構成は以下のとおりで こちらのsw-install.jsとsw.jsを触っていく
serviceWorker対応チェック
serviceWorkerが対応しているのか確認する
これも前回と同じです
ソース
実行結果
実際にサポートされているのがわかったので次はインストールする。
window.addEventListenerのloadイベントをとって関数にわたす(アロー関数)
navigator.serviceWorkerのオブジェクトを利用してインストールする
成功した場合はregにわたされる。失敗した場合はcatchする
- ソース
Workboxのインストール
2018年8月12日時点で公式のサイトに書いてある内容です。たぶんバージョンアップが頻繁におこなわれているので、導入する場合はバージョンを確認してください
ソース
実行結果
Workboxのキャッシュの設定
ソース
実行結果
終わり(・∀・)
これでオフラインも対応できる。前回のソースが悲しくなるwww
感想
便利すぎて使いこなせていない気がする。PWAをおこなうならこのWorkboxしかない ネットワークが使えない時にGoogleアナリティクスの通知をキューにためる機能とか必須だと思われるのでマスターしたいと思う。