ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript の新しい知識: サービス ワーカー

JavaScript の新しい知識: サービス ワーカー

阿神
阿神オリジナル
2017-01-24 14:30:411358ブラウズ

フロントエンド テクノロジーはデスクトップ テクノロジーに近づいており、最も重要なものの 1 つはサービス ワーカーであり、これにより HTML アプリのオフラインでの動作が可能になります。この記事では、簡単なケース コードを使用してこのテクノロジを説明します。使用するツール:

1. ブラウザのバージョンは chrome 55

2. サーバー システム: Node 5.0

3 つのファイルを準備する必要があります:

touch  index.html b.html sw.js

ファイルの内容は次のとおりです:

  <script>
    if (&#39;serviceWorker&#39; in navigator) {
      navigator.serviceWorker.register(&#39;/sw.js&#39;);
    }    </script>

1 つの Service Worker を登録します。ファイル名は sw.js (JavaScript コード ファイル) です。実際のキー ファイルは sw.js で、その内容は次のとおりです。

   const cacheName = &#39;v1::static&#39;;    self.addEventListener(&#39;install&#39;, e => {
      e.waitUntil(
        caches.open(cacheName).then(cache => {          return cache.addAll([            &#39;/&#39;,
          ]).then(() => self.skipWaiting());
        })
      );
    });    self.addEventListener(&#39;fetch&#39;, event => {
      event.respondWith(
        caches.open(cacheName).then(cache => {          return cache.match(event.request).then(res => {            return res || fetch(event.request)
          });
        })
      );
    });

ServiceWorker が初めてロードされるときに、install が呼び出されます。ここで、いくつかの初期化作業を実行できます。オフライン時に必要なファイルはキャッシュに保存されます。ここでは「/」を指定して、すべてのコンテンツがキャッシュされるようにします。

2 番目のイベントは fetch で、リモート リソースにアクセスするときに呼び出されます。ここで一致を確認できます。キャッシュにリソースがある場合は、キャッシュ内のリソースが返されます。そうでない場合は、リモートで取得されます。

3 番目のファイル b.html は、オフライン効果を示すファイルです:

<h1>serviceWorker B</h1>

http サーバーをインストールして現在のパスで実行することもできます:

npm i http-server 
    http-server

にアクセスしてください:

http://localhost:8080/index.html

http://localhost:8080/b.html

その後、httpサーバーを閉じて

 http://localhost:8080/b.html

に再度アクセスするとアクセスできるようになりますよ〜、これがオフライン実装の効果です。

まあ、Service Worker の実行ステータスを確認したい場合は、次の URL を使用することもできます:

 chrome://inspect/#service-workers

詳細については、こちらで確認できます:

 chrome://serviceworker-internals/

ここで、登録の開始、キャンセル、その他の操作を行うことができます。

その実装を確認できますが、まだそれほど楽観的ではありません:

http://caniuse.com/#feat=serviceworkers
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。