99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Angular Service Worker和PWA-入門

2022-07-12 09:38 更新

Service Worker 快速上手

本文檔解釋了如何在 ?Angular CLI? 項目中啟用對 Angular Service Worker 的支持。稍后它會用一個簡單的范例來向你展示 Service Worker 實踐,包括加載和基礎的緩存功能。

前提條件

對 Angular Service Worker 簡介中的信息有了基本的了解。

為你的項目添加 Service Worker

要讓你的項目支持 Angular Service Worker,可以使用 CLI 命令 ?ng add @angular/pwa?。它會添加 ?@angular/service-worker? 包,并建立必要的支持文件,小心翼翼地配置你的應用,以便使用 Service Worker。

ng add @angular/pwa --project <project-name>

上述命令完成了如下步驟:

  1. 把 @angular/service-worker 添加到你的項目中。
  2. 在 CLI 中啟用 Service Worker 的構建支持。
  3. 在應用模塊中導入并注冊 Service Worker。
  4. 修改 ?index.html? 文件:
    • 包含要添加到 ?manifest.webmanifest? 文件中的鏈接。
    • 為 ?theme-color? 添加 meta 標簽。
  5. 創(chuàng)建圖標文件,以支持安裝漸進式應用(PWA)。
  6. 創(chuàng)建一個名叫 ?ngsw-config.json? 的 Service Worker 配置文件,它會用來指定緩存的行為以及其它設定。
  7. 現(xiàn)在,構建本項目:

ng build

現(xiàn)在,這個 CLI 項目就可以使用 Angular Service Worker 了。

Service Worker 實戰(zhàn):向導

本節(jié)用一個范例應用來演示一下 Service Worker 實戰(zhàn)。

用 http-server 啟動開發(fā)服務器

由于 ?ng serve? 對 Service Worker 無效,所以必須用一個獨立的 HTTP 服務器在本地測試你的項目。可以用任何 HTTP 服務器。下面這個例子使用來自 npm 中的 http-server 包。為了減小端口沖突的可能性,我們在一個專用端口上進行測試。

要想使用 ?http-server? 在包含這些 web 文件的目錄上啟動服務,運行下列命令:

http-server -p 8080 -c-1 dist/<project-name>

最初的加載

在服務器運行起來之后,你可以在瀏覽器中訪問 ?<http://localhost:8080/>?。你的應用像通常一樣加載。

提示:
當測試 Angular Service Worker 時,最好使用瀏覽器中的隱身或隱私窗口,以確保 Service Worker 不會從以前的殘留狀態(tài)中讀取數(shù)據(jù),否則可能導致意外的行為。
注意:
如果沒有使用 HTTPS,那么 Service Worker 只會在 ?localhost ?上的應用中進行注冊。

模擬網(wǎng)絡出問題

要想模擬網(wǎng)絡出問題的情況,可以為你的應用禁用網(wǎng)絡交互。在 Chrome 中:

  1. 選擇 Tools > Developer Tools(從右上角的 Chrome 菜單)。
  2. 進入 Network 頁。
  3. 在 Throttling 下拉菜單中選擇 Offline 復選框。


現(xiàn)在,本應用不能再和網(wǎng)絡進行交互了。

對于那些不使用 Angular Service Worker 的應用,現(xiàn)在刷新將會顯示 Chrome 的“網(wǎng)絡中斷”頁,提示“沒有可用的網(wǎng)絡連接”。

有了 Angular Service Worker,本應用的行為就不一樣了。刷新時,頁面會正常加載。

看看 Network 頁,來驗證此 Service Worker 是激活的。


注意:
在 “Size” 列中,請求的狀態(tài)是 ?(ServiceWorker)?。 這表示該資源不是從網(wǎng)絡上加載的,而是從 Service Worker 的緩存中。

什么被緩存了?

注意,瀏覽器要渲染的所有這些文件都被緩存了。?ngsw-config.json? 樣板文件被配置成了要緩存 CLI 用到的那些文件:

  • ?index.html ?
  • ?favicon.ico ?
  • 構建結果(JS 和 CSS 包)
  • ?assets ?下的一切
  • 圖片和字體直接位于所配置的 outputPath (默認為 ?./dist/<project-name>/?) 或 ?resourcesOutputPath ?下。
注意如下兩個關鍵點:
  1. 所生成的 ?ngsw-config.json? 包括一個可緩存字體和圖像的有限列表。在某些情況下,你可能要按需修改這些 glob 模式。
  2. 如果在生成了配置文件之后修改了 ?resourcesOutputPath ?或 ?assets ?的路徑,那么就要在 ?ngsw-config.json? 中手動修改這些路徑。

修改你的應用

現(xiàn)在,你已經(jīng)看到了 Service Worker 如何緩存你的應用,接下來的步驟講它如何進行更新。

  1. 如果你正在隱身窗口中測試,請打開第二個空白頁。這會讓該隱身窗口和緩存的狀態(tài)在測試期間持續(xù)活著。
  2. 關閉該應用的頁面,而不是整個窗口。這也會同時關閉開發(fā)者工具。
  3. 關閉 ?http-server?。
  4. 打開 ?src/app/app.component.html? 以供編輯。
  5. 把文本 ?Welcome to {{title}}!? 改為 ?Bienvenue à {{title}}!?。
  6. 再次構建并運行此服務器:
ng build
http-server -p 8080 -c-1 dist/<project-name>

在瀏覽器中更新你的應用

現(xiàn)在,看看瀏覽器和 Service Worker 如何處理這個更新后的應用。

  1. 再次在同一個窗口中打開 http://localhost:8080,發(fā)生了什么?

  2. 錯在哪里?哪里也沒錯,真的。Angular Service Worker 正在做自己的工作,并且用它已經(jīng)安裝過的版本提供服務,雖然,已經(jīng)有新版本可用了。由于更關注速度,所以 Service Worker 并不會在啟動它已經(jīng)緩存過的版本之前先等待檢查更新。

    看看 ?http-server? 的 log,就會發(fā)現(xiàn) Service Worker 請求了 ?/ngsw.json? 文件,這是 Service Worker 正在檢查更新。

  3. 刷新頁面。

  4. Service Worker 在后臺安裝好了這個更新后的版本,下次加載或刷新頁面時,Service Worker 就切換到最新的版本了。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號