国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

未來可期之PWA漸進式Web應用

張康康 ? 2019-07-29 18:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者 | 極鏈科技Video++前端Team子昂

整理 | 包包

前端技術這幾年發(fā)展迅速,其中就有PWA,全名Progressive Web APP即漸進式Web應用程序,在2016年,Google I/O 大會上提出的一個 Next Web Generation 概念。PWA是專門應對手機web開發(fā)提出來的,它可以將 web 和 app 各自優(yōu)勢結合到一起:漸進式、離線加載等實現趨近于App的交互,實時更新、可推送、可安裝等,達到一個當我們使用Web應用時體驗可以像一款原生App一樣。特別說明一下,很多人以為PWA是一種新技術,然而并不是,它是應用多項Web技術的一個集合,其中核心技術即 “Service Worker”,我們把它放在后面說。

目前我們使用Web應用和很多國內SPA一樣,通常都是在打開一個頁面的時候發(fā)起請求來獲取數據,在離線的情況一般就不可用了。而PWA是旨在改善Web的體驗,將網絡的優(yōu)勢與應用的優(yōu)勢融合起來,給用戶更優(yōu)的體驗。PWA具有的特點分別是:

  • 可靠即使在不穩(wěn)定的網絡環(huán)境下(包括無網絡的情況),也可以立即加載并展現。

  • 響應快速用戶交互響應迅速,有平滑流暢的動畫進行響應。

  • 粘性像設備上原生應用一樣,具有逼真的用戶體驗,同時用戶還可以將其添加到桌面。

  • 漸進式適用于使用任何瀏覽器的用戶,因為它的核心是以漸進式增強。

  • 自適應任何形式上都可使用:桌面設備、移動設備等。

  • 安全通過HTTPS,防止窺探以及保障內容不會被篡改。

  • 可發(fā)現因為W3C清單和服務工作注冊范圍,可以讓搜索引擎找到它,將其識別為“應用程序”。

  • 可安裝用戶再去app store去下載,可以直接將應用添加到主屏幕從而保留進行使用。

  • 可鏈接可以通過url地址分享應用程序,省去了復雜的安裝。

我們在其中選擇幾點著重解釋一下:

(1)可安裝

它是指在設備的主屏幕上像原生APP一樣留有圖標。要實現這特點首先需要提供Web app manifest(web應用程序清單),manifest是一個json文件,它里面描述的是應用程序的圖標如何在主屏幕顯示以及點擊后跳轉到的頁面是什么,我們可以直接在html中引用它“”,它的格式如下圖:

f743d4a91edd4087b2ccae9fbc327f18


其中幾個屬性代表的意思是:

? start_url 設置跳轉的地址

? icons 讓我們設置頁面的圖標

? background_color 設置背景顏色, 應用啟動后會立即使用此顏色,這一顏色將保留在屏幕上,直至網絡應用首次呈現

? theme_color 會設置主題顏色

? display 設置是否啟動狀態(tài)

這里的display設置的是網絡應用是否隱藏瀏覽器的UI,當display的值為"standalone"時,網絡應用隱藏瀏覽器的UI;當display的值為"browser"時,則顯正常顯示。


關于manifest.json里字段更加具體的含義,感興趣的同學可以去谷歌開發(fā)者文檔里探索一下啦。

(2)這是一個非常diao的特性:可離線使用即在沒有網絡環(huán)境的情況下也能打開應用程序,實現這一強大功能的幕后大佬是:Service worker(服務人員)。

Service worker其實是一段腳本,我們平時緩存都是session、localStorage、CacheStorage這些,PWA通過Service worker訪問CacheStorage實現緩存及離線開發(fā)。

這里簡單講一下Service worker的概念,通常瀏覽器加載頁面運行的是主JavaScript線程,而Service worker作為一個獨立的線程,可以理解為在瀏覽器身后默默無聞運行的一個線程。

正因為這個特性,Service worker無論如何都不會阻塞我們的主線程,意味著不會使我們的瀏覽器頁面卡頓等。在使用Service worker時要注意,我們使用的協(xié)議必須是https,當然如果想在本地開發(fā)弄一個https是很讓人頭疼的,幸運的是Service worker允許在本地hostlocalhost或者127.0.0.1也可以跑起來。

我們來看一下,如何注冊Service worker?

首先,我們要判斷當前使用的瀏覽器是否支持Service worker,支持我們才能繼續(xù)進行下去,如果支持,那么在頁面加載的時候注冊位于/sw.js的Service worker,看下面的代碼:

4e443fe283514610b9d91e33eaa5e2f2


每次頁面加載成功后,就會調用 register() 方法,瀏覽器將會判斷 Service Worker 線程是否已注冊并做出相應的處理。

register 方法的 scope 參數是可選的,用于指定你想讓 Service Worker 控制的內容的子目錄。本 demo 中服務工作線程文件位于根網域, 這意味著服務工作線程的作用域將是整個來源。

關于Service Worker更加詳細的介紹,感興趣的同學可以參考MDN文檔。

對啦,Service worker也是有生命周期的,它的詳細介紹可以參考下圖:

fa02542b561142808d8e2540ddba79ac


說了這么多,那我們開發(fā)者如何了解一個網頁是否具備了 PWA 的一些特點呢?

我們可以通過谷歌開發(fā)工具,在其中找到Audits面板,它可以檢測出頁面是否具備PWA的特點:

c074863701fb45d2bda98d71b17c29a7


下面我們來看一個簡單的demo,看一下PWA在離線時依然能夠快速加載應用。

首先我們將加載loading直接顯示出來,確保用戶在打開網頁可以立即看到,讓用戶知道此時頁面在加載中:


此時我們將html頁面中引用的js的注釋取消,將我們寫的虛假數據加載出來:


那么如何實現緩存呢?即在離線的環(huán)境下加載出來數據,此時將網絡環(huán)境調成Offline,頁面無法加載:

這里就要應用到上面我們說的Service worker服務工作線程來實現。

先來檢查一下瀏覽器是否支持Service worker:

90ab65473d7049e28f0c99a53e21f0e8


如果瀏覽器支持,就會注冊服務工作線程,當用戶第一次打開頁面時就會觸發(fā)安裝事件從而將緩存所需的內容。

下圖為核心代碼,實現了真正的離線緩存:

96d411faaa134a55943a637513034477


首先,我們需要通過 caches.open() 打開緩存并提供一個緩存名稱。提供緩存名稱可讓我們對文件進行版本控制,或將數據與 App Shell 分開,以便我們能輕松地更新某個數據,而不會影響其他數據。

我們在install偵聽器下面添加activate事件偵聽器,因為activate事件會在Service worker啟動時觸發(fā),圖中activate事件里面的代碼可以確保文件更改的時候更新緩存

最后我們需要從緩存中提取我們需要的內容,就是下面這段代碼:

0fe7d54c60b04209b4bcebc32d44343c


caches.match() 會由內而外對觸發(fā)抓取事件的網絡請求進行評估,并檢查以確認它是否位于緩存內。它隨即使用已緩存版本作出響應,或者利用 fetch 從網絡獲取一個副本,response 通過 e.respondWith() 傳回至網頁。

現在來看一下我們在離線的時候頁面是否會加載呢?


如圖,在Offline的網絡環(huán)境下,我們的應用成功加載出來了。

這個小demo就到這里啦!

目前Progressive Web App仍處于初級階段,國內普及度還不夠,但是不可忽視其背后的的技術,以及對前端全新的定位,或許它會像十年前的AJAX那樣重新改變前端的生態(tài)。


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    MySQL慢查詢分析與索引調優(yōu)全流程

    MySQL 性能問題在生產環(huán)境中的表現通常是漸進式的:業(yè)務量增長、數據量膨脹,某天突然發(fā)現 P99 響應時間從 50ms 漲到 2s。慢查詢是最常見的根因,而索引設計不合理又是慢查詢的主要來源。
    的頭像 發(fā)表于 03-06 15:56 ?71次閱讀

    Python運行本地Web服務并實現遠程訪問

    本文介紹使用Python搭建本地Web服務并結合 ZeroNews 實現公網訪問。
    的頭像 發(fā)表于 02-06 11:39 ?155次閱讀
    Python運行本地<b class='flag-5'>Web</b>服務并實現遠程訪問

    UV三防漆與普通三防漆:效率與性能之間的根本抉擇

    是固化時間從“小時級”到“秒級”的飛躍,但這僅僅是變革的起點,更深層的影響貫穿于材料性能、工藝控制、設計約束和總成本之中。?一、根本區(qū)別:觸發(fā)式“快照”與漸進式
    的頭像 發(fā)表于 01-19 09:51 ?162次閱讀
    UV三防漆與普通三防漆:效率與性能之間的根本抉擇

    非接觸位移傳感器:以無形觸,丈量工業(yè)未來

    在智能制造的浪潮中,精度與效率是衡量技術進步的核心標尺。當傳統(tǒng)接觸傳感器因機械磨損、環(huán)境干擾而逐漸顯露局限,貝弗德非接觸位移傳感器正以“無形觸”重新定義測量邊界——它無需物理接觸目標物體,僅憑
    的頭像 發(fā)表于 12-05 08:46 ?470次閱讀
    非接觸<b class='flag-5'>式</b>位移傳感器:以無形<b class='flag-5'>之</b>觸,丈量工業(yè)<b class='flag-5'>未來</b>

    一文了解Mojo編程語言

    CPU、GPU 和其他加速器的支持,簡化了并行編程模型。 漸進式類型系統(tǒng) 結合靜態(tài)類型檢查和類型推導,既保證編譯時安全性,又保留動態(tài)類型的靈活性。 應用場景 AI 與機器學習 用于訓練大型模型和實時推理
    發(fā)表于 11-07 05:59

    如何判斷射頻模塊的硬件是否損壞?

    )” 與 “性能下降(漸進式老化)”—— 前者通常表現為 功能中斷、參數完全偏離、物理損傷痕跡 ,后者多為參數漸進漂移。以下是分場景、可操作的判斷方法,覆蓋從現場快速排查到實驗室精密檢測的全流程: 一、直觀物理異常:快速識別 “
    的頭像 發(fā)表于 10-14 17:36 ?1096次閱讀

    如何快速在云服務器上部署Web環(huán)境?

    如何快速在云服務器上部署Web環(huán)境
    的頭像 發(fā)表于 10-14 14:16 ?663次閱讀

    【「AI芯片:科技探索與AGI愿景」閱讀體驗】+可期之變:從AI硬件到AI濕件

    生物化學計算機,它通過離子、分子間的相互作用來進行復雜的并行計算。因而未來可期的前景是AI硬件將走向AI濕件。 根據研究,估算出大腦的功率是20W,在進行智力活動時,其功率會增大到25~50W。在大腦進化
    發(fā)表于 09-06 19:12

    大芯徑光纖連接器:照亮未來的光橋梁

    在信息爆炸的時代,數據洪流奔涌不息,而承載這股洪流的,正是光纖網絡。作為光纖網絡的關鍵節(jié)點,光纖連接器扮演著至關重要的角色。其中,大芯徑光纖連接器憑借其獨特優(yōu)勢,在特定應用場景中脫穎而出,成為照亮未來的光橋梁。
    的頭像 發(fā)表于 07-09 16:13 ?614次閱讀

    labview如何調用web api

    同事給了一個web api 的接口地址,方法名等等。但是我不會用labview去調用。求高手指點!
    發(fā)表于 06-26 17:24

    空壓機斷油保護裝置未來可期 # #plc

    空壓機
    jf_35231275
    發(fā)布于 :2025年06月18日 15:52:08

    WEB組態(tài)物聯(lián)網平臺是什么?有什么功能?

    、流程控制等操作,無需安裝本地客戶端。 核心特點 : Web化部署 :基于B/S架構,用戶通過瀏覽器即可訪問,降低部署和維護成本。 組態(tài)化配置 :提供拖拽界面設計工具,用戶可快速搭建監(jiān)控畫面(如工業(yè)流程圖、設備狀態(tài)看板等)。 物聯(lián)網集成 :
    的頭像 發(fā)表于 06-17 15:25 ?974次閱讀

    Bourns 擴展增量編碼器產品線,旋轉壽命功能再升級

    組件領導制造供貨商,宣布擴展其 PEC11J 增量編碼器產品系列,新增功能可提升裝置的旋轉壽命。設計人員現在可選擇每 360° 旋轉 24 脈沖的產品,并可選配無定位點選項。旋轉脈沖功能可滿足日益多樣化的客戶應用需求,而無定位點設計則提供更平順、連續(xù)的操作體驗,適用于需要精密、
    發(fā)表于 06-10 14:56 ?1596次閱讀
    Bourns 擴展增量<b class='flag-5'>式</b>編碼器產品線,旋轉壽命功能再升級

    開源鴻蒙Web與W3C標準分論壇圓滿舉辦

    以及相關領域做了深入的研討。分論壇共包括九個議題,從ArkWeb當下競爭力與發(fā)展規(guī)劃、生態(tài)伙伴最佳實踐、開源生態(tài)與標準機制以及未來發(fā)展幾個部分展開,對開源鴻蒙Web領域做了全面的講解,并對未來
    的頭像 發(fā)表于 06-05 15:16 ?1089次閱讀

    「極速探索HarmonyOS NEXT 」閱讀體驗】+Web組件

    web web應用是基于 Web技術(如HTML、CSS、JavaScript),構建在瀏覽器中運行的應用,亦稱為前端開發(fā)。從用戶視角來看,手機和平板上的應用多由原生開發(fā)打造;而通過瀏覽器訪問的網頁
    發(fā)表于 03-10 10:39