まず、以下の手順に従ってserviceworker.jsファイルを作成します。
- srcフォルダ内に新しいファイルを作成し、serviceworker.jsという名前を付けます。
- serviceworker.jsファイルの先頭に以下のコードを追加します:
// serviceworker.js
// インストール時にキャッシュするファイルの定義
const CACHE_NAME = 'my-cache';
const urlsToCache = [
'/',
'/index.html',
'/manifest.json',
// キャッシュする他のファイルをここに追加
];
// インストールイベント
self.addEventListener('install', (event) => {
event.waitUntil(
caches.open(CACHE_NAME)
.then((cache) => cache.addAll(urlsToCache))
);
});
// フェッチイベント
self.addEventListener('fetch', (event) => {
event.respondWith(
caches.match(event.request)
.then((response) => {
if (response) {
return response;
}
return fetch(event.request);
})
);
});
上記のコードは、サービスワーカーのインストール時に指定したファイルをキャッシュし、フェッチイベントでキャッシュからレスポンスを取得する基本的な設定です。
- serviceworker.jsファイルをReactアプリに登録するために、src/index.jsファイルを編集します。以下のコードを追加します:
// index.js
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/serviceworker.js')
.then((registration) => {
console.log('ServiceWorker registration successful with scope: ', registration.scope);
})
.catch((error) => {
console.log('ServiceWorker registration failed: ', error);
});
});
}
上記のコードは、ブラウザがサービスワーカーをサポートしている場合に、serviceworker.jsファイルを登録する処理を追加します。
これで、Reactアプリ内でサービスワーカーが有効になりました。アプリをビルドして実行すると、指定したファイルがキャッシュされ、オフライン時にもアプリが動作するようになります。
また、サービスワーカーを使用してプッシュ通知などの高度な機能を追加することも可能です。詳細なコード例や設定方法については、公式のService Worker APIドキュメントやReactの公式ドキュメントを参考にしてください。
以上が、Reactのsrcフォルダ内のserviceworker.jsの設定と使用方法についての説明です。これにより、Reactアプリをオフライン対応のPWAとして展開することができます。