女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

未來(lái)可期之PWA漸進(jìn)式Web應(yīng)用

張康康 ? 2019-07-29 18:27 ? 次閱讀

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

整理 | 包包

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

目前我們使用Web應(yīng)用和很多國(guó)內(nèi)SPA一樣,通常都是在打開(kāi)一個(gè)頁(yè)面的時(shí)候發(fā)起請(qǐng)求來(lái)獲取數(shù)據(jù),在離線的情況一般就不可用了。而PWA是旨在改善Web的體驗(yàn),將網(wǎng)絡(luò)的優(yōu)勢(shì)與應(yīng)用的優(yōu)勢(shì)融合起來(lái),給用戶更優(yōu)的體驗(yàn)。PWA具有的特點(diǎn)分別是:

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

  • 響應(yīng)快速用戶交互響應(yīng)迅速,有平滑流暢的動(dòng)畫(huà)進(jìn)行響應(yīng)。

  • 粘性像設(shè)備上原生應(yīng)用一樣,具有逼真的用戶體驗(yàn),同時(shí)用戶還可以將其添加到桌面。

  • 漸進(jìn)式適用于使用任何瀏覽器的用戶,因?yàn)樗暮诵氖且詽u進(jìn)式增強(qiáng)。

  • 自適應(yīng)任何形式上都可使用:桌面設(shè)備、移動(dòng)設(shè)備等。

  • 安全通過(guò)HTTPS,防止窺探以及保障內(nèi)容不會(huì)被篡改。

  • 可發(fā)現(xiàn)因?yàn)閃3C清單和服務(wù)工作注冊(cè)范圍,可以讓搜索引擎找到它,將其識(shí)別為“應(yīng)用程序”。

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

  • 可鏈接可以通過(guò)url地址分享應(yīng)用程序,省去了復(fù)雜的安裝。

我們?cè)谄渲羞x擇幾點(diǎn)著重解釋一下:

(1)可安裝

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

f743d4a91edd4087b2ccae9fbc327f18


其中幾個(gè)屬性代表的意思是:

? start_url 設(shè)置跳轉(zhuǎn)的地址

? icons 讓我們?cè)O(shè)置頁(yè)面的圖標(biāo)

? background_color 設(shè)置背景顏色, 應(yīng)用啟動(dòng)后會(huì)立即使用此顏色,這一顏色將保留在屏幕上,直至網(wǎng)絡(luò)應(yīng)用首次呈現(xiàn)

? theme_color 會(huì)設(shè)置主題顏色

? display 設(shè)置是否啟動(dòng)狀態(tài)

這里的display設(shè)置的是網(wǎng)絡(luò)應(yīng)用是否隱藏瀏覽器的UI,當(dāng)display的值為"standalone"時(shí),網(wǎng)絡(luò)應(yīng)用隱藏瀏覽器的UI;當(dāng)display的值為"browser"時(shí),則顯正常顯示。


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

(2)這是一個(gè)非常diao的特性:可離線使用即在沒(méi)有網(wǎng)絡(luò)環(huán)境的情況下也能打開(kāi)應(yīng)用程序,實(shí)現(xiàn)這一強(qiáng)大功能的幕后大佬是:Service worker(服務(wù)人員)。

Service worker其實(shí)是一段腳本,我們平時(shí)緩存都是session、localStorage、CacheStorage這些,PWA通過(guò)Service worker訪問(wèn)CacheStorage實(shí)現(xiàn)緩存及離線開(kāi)發(fā)。

這里簡(jiǎn)單講一下Service worker的概念,通常瀏覽器加載頁(yè)面運(yùn)行的是主JavaScript線程,而Service worker作為一個(gè)獨(dú)立的線程,可以理解為在瀏覽器身后默默無(wú)聞運(yùn)行的一個(gè)線程。

正因?yàn)檫@個(gè)特性,Service worker無(wú)論如何都不會(huì)阻塞我們的主線程,意味著不會(huì)使我們的瀏覽器頁(yè)面卡頓等。在使用Service worker時(shí)要注意,我們使用的協(xié)議必須是https,當(dāng)然如果想在本地開(kāi)發(fā)弄一個(gè)https是很讓人頭疼的,幸運(yùn)的是Service worker允許在本地hostlocalhost或者127.0.0.1也可以跑起來(lái)。

我們來(lái)看一下,如何注冊(cè)Service worker?

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

4e443fe283514610b9d91e33eaa5e2f2


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

register 方法的 scope 參數(shù)是可選的,用于指定你想讓 Service Worker 控制的內(nèi)容的子目錄。本 demo 中服務(wù)工作線程文件位于根網(wǎng)域, 這意味著服務(wù)工作線程的作用域?qū)⑹钦麄€(gè)來(lái)源。

關(guān)于Service Worker更加詳細(xì)的介紹,感興趣的同學(xué)可以參考MDN文檔。

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

fa02542b561142808d8e2540ddba79ac


說(shuō)了這么多,那我們開(kāi)發(fā)者如何了解一個(gè)網(wǎng)頁(yè)是否具備了 PWA 的一些特點(diǎn)呢?

我們可以通過(guò)谷歌開(kāi)發(fā)工具,在其中找到Audits面板,它可以檢測(cè)出頁(yè)面是否具備PWA的特點(diǎn):

c074863701fb45d2bda98d71b17c29a7


下面我們來(lái)看一個(gè)簡(jiǎn)單的demo,看一下PWA在離線時(shí)依然能夠快速加載應(yīng)用。

首先我們將加載loading直接顯示出來(lái),確保用戶在打開(kāi)網(wǎng)頁(yè)可以立即看到,讓用戶知道此時(shí)頁(yè)面在加載中:


此時(shí)我們將html頁(yè)面中引用的js的注釋取消,將我們寫(xiě)的虛假數(shù)據(jù)加載出來(lái):


那么如何實(shí)現(xiàn)緩存呢?即在離線的環(huán)境下加載出來(lái)數(shù)據(jù),此時(shí)將網(wǎng)絡(luò)環(huán)境調(diào)成Offline,頁(yè)面無(wú)法加載:

這里就要應(yīng)用到上面我們說(shuō)的Service worker服務(wù)工作線程來(lái)實(shí)現(xiàn)。

先來(lái)檢查一下瀏覽器是否支持Service worker:

90ab65473d7049e28f0c99a53e21f0e8


如果瀏覽器支持,就會(huì)注冊(cè)服務(wù)工作線程,當(dāng)用戶第一次打開(kāi)頁(yè)面時(shí)就會(huì)觸發(fā)安裝事件從而將緩存所需的內(nèi)容。

下圖為核心代碼,實(shí)現(xiàn)了真正的離線緩存:

96d411faaa134a55943a637513034477


首先,我們需要通過(guò) caches.open() 打開(kāi)緩存并提供一個(gè)緩存名稱。提供緩存名稱可讓我們對(duì)文件進(jìn)行版本控制,或?qū)?shù)據(jù)與 App Shell 分開(kāi),以便我們能輕松地更新某個(gè)數(shù)據(jù),而不會(huì)影響其他數(shù)據(jù)。

我們?cè)趇nstall偵聽(tīng)器下面添加activate事件偵聽(tīng)器,因?yàn)閍ctivate事件會(huì)在Service worker啟動(dòng)時(shí)觸發(fā),圖中activate事件里面的代碼可以確保文件更改的時(shí)候更新緩存

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

0fe7d54c60b04209b4bcebc32d44343c


caches.match() 會(huì)由內(nèi)而外對(duì)觸發(fā)抓取事件的網(wǎng)絡(luò)請(qǐng)求進(jìn)行評(píng)估,并檢查以確認(rèn)它是否位于緩存內(nèi)。它隨即使用已緩存版本作出響應(yīng),或者利用 fetch 從網(wǎng)絡(luò)獲取一個(gè)副本,response 通過(guò) e.respondWith() 傳回至網(wǎng)頁(yè)。

現(xiàn)在來(lái)看一下我們?cè)陔x線的時(shí)候頁(yè)面是否會(huì)加載呢?


如圖,在Offline的網(wǎng)絡(luò)環(huán)境下,我們的應(yīng)用成功加載出來(lái)了。

這個(gè)小demo就到這里啦!

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


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    開(kāi)源鴻蒙Web與W3C標(biāo)準(zhǔn)分論壇圓滿舉辦

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

    「極速探索HarmonyOS NEXT 」閱讀體驗(yàn)】+Web組件

    web web應(yīng)用是基于 Web技術(shù)(如HTML、CSS、JavaScript),構(gòu)建在瀏覽器中運(yùn)行的應(yīng)用,亦稱為前端開(kāi)發(fā)。從用戶視角來(lái)看,手機(jī)和平板上的應(yīng)用多由原生開(kāi)發(fā)打造;而通過(guò)瀏覽器訪問(wèn)的網(wǎng)頁(yè)
    發(fā)表于 03-10 10:39

    基于Django89的web框架代碼

    基于Django89的web框架代碼,超詳細(xì)
    發(fā)表于 02-10 15:38 ?0次下載

    Web安全滲透測(cè)試基礎(chǔ)與實(shí)踐

    在網(wǎng)絡(luò)安全領(lǐng)域,Web滲透測(cè)試是發(fā)現(xiàn)Web應(yīng)用漏洞的重要手段。下面介紹滲透測(cè)試的基礎(chǔ)和實(shí)踐。 信息收集是滲透測(cè)試的第一步。使用whois命令查詢域名注冊(cè)信息,nslookup命令查詢域名解析記錄
    的頭像 發(fā)表于 01-22 09:33 ?403次閱讀

    HarmonyOS Web開(kāi)發(fā)性能優(yōu)化指導(dǎo)

    完成后當(dāng)前組件連接關(guān)閉,如需下一個(gè)頁(yè)面預(yù)連接需顯調(diào)用接口。 (五)預(yù)渲染優(yōu)化 原理介紹 預(yù)渲染優(yōu)化適用于Web頁(yè)面啟動(dòng)和跳轉(zhuǎn)場(chǎng)景,例如,進(jìn)入首頁(yè)后,跳轉(zhuǎn)到其他子頁(yè)。與預(yù)連接、預(yù)下載不同的是,預(yù)渲染需要
    發(fā)表于 12-06 08:41

    入門web安全筆記分享

    在計(jì)算機(jī)技術(shù)如日中天的今天,Web安全問(wèn)題也接踵而來(lái)。但Web安全卻“入門簡(jiǎn)單精通難”,涉及技術(shù)非常多且廣,學(xué)習(xí)阻力很大。 為此今天分享一份94頁(yè)的《Web Hacking 101》筆記,包含
    的頭像 發(fā)表于 12-03 17:04 ?592次閱讀
    入門<b class='flag-5'>web</b>安全筆記分享

    AWTK-WEB 快速入門(1) - C 語(yǔ)言應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開(kāi)發(fā)各種平臺(tái)的應(yīng)用程序。有時(shí)我們需要使用Web界面與設(shè)備進(jìn)行交互,本文介紹一下如何使用C語(yǔ)言開(kāi)發(fā)AWTK-WEB應(yīng)用程序。用AWTKDesigner新建一個(gè)應(yīng)用程序先
    的頭像 發(fā)表于 11-27 11:46 ?614次閱讀
    AWTK-<b class='flag-5'>WEB</b> 快速入門(1) - C 語(yǔ)言應(yīng)用程序

    嵌入系統(tǒng)的未來(lái)趨勢(shì)有哪些?

    嵌入系統(tǒng)是指將我們的操作系統(tǒng)和功能軟件集成于計(jì)算機(jī)硬件系統(tǒng)之中,形成一個(gè)專用的計(jì)算機(jī)系統(tǒng)。那么嵌入系統(tǒng)的未來(lái)趨勢(shì)有哪些呢? 1. 人工智能與機(jī)器學(xué)習(xí)的整合 隨著現(xiàn)代人工智能(AI)和機(jī)器學(xué)習(xí)
    發(fā)表于 09-12 15:42

    蘋(píng)果AI功能被曝將分階段緩慢推出

    據(jù)知名科技記者馬克·古爾曼的最新爆料,蘋(píng)果公司的AI戰(zhàn)略正采取分階段、漸進(jìn)式的推出方式。他指出,Apple Intelligence目前尚處于發(fā)展初期,其初始版本將不可避免地面臨功能缺失的局限,尤其是在歐盟市場(chǎng),初期將無(wú)法使用。
    的頭像 發(fā)表于 09-09 17:19 ?1368次閱讀

    北京迅為RK3568開(kāi)發(fā)板嵌入學(xué)習(xí)Linux驅(qū)動(dòng)全新更新-CAN+

    北京迅為RK3568開(kāi)發(fā)板嵌入學(xué)習(xí)Linux驅(qū)動(dòng)全新更新-CAN+
    的頭像 發(fā)表于 09-04 15:29 ?916次閱讀
    北京迅為RK3568開(kāi)發(fā)板嵌入<b class='flag-5'>式</b>學(xué)習(xí)<b class='flag-5'>之</b>Linux驅(qū)動(dòng)全新更新-CAN+

    HT for Web并力ARMxy工業(yè)計(jì)算機(jī)實(shí)現(xiàn)數(shù)字化轉(zhuǎn)型可視化解決方案

    數(shù)字化轉(zhuǎn)型作為制造企業(yè)轉(zhuǎn)型的關(guān)鍵過(guò)程,正迅速改變傳統(tǒng)的工業(yè)運(yùn)營(yíng)模式。HT for Web與ARMxy工業(yè)計(jì)算機(jī)的結(jié)合,為數(shù)字化轉(zhuǎn)型提供了一個(gè)高度集成的可視化平臺(tái)。通過(guò)HT for Web的拖拽界面
    的頭像 發(fā)表于 08-28 16:17 ?697次閱讀
    HT for <b class='flag-5'>Web</b>并力ARMxy工業(yè)計(jì)算機(jī)實(shí)現(xiàn)數(shù)字化轉(zhuǎn)型可視化解決方案

    微軟向Windows內(nèi)部測(cè)試人員推送Windows 11 Build 26120.1330

    )更新。依據(jù)這篇博文中所述的細(xì)則,我們有理由擴(kuò)充相關(guān)預(yù)覽版更新的主要內(nèi)容。值得注意的是,其中相當(dāng)大的更新幅度都是處于“漸進(jìn)式推出階段”,目前尚未全面向所有用戶開(kāi)放。
    的頭像 發(fā)表于 07-27 14:53 ?1076次閱讀

    華納云:java web和java有什么區(qū)別java web和java有什么區(qū)別

    Java Web和Java是兩個(gè)不同的概念,它們?cè)诠δ堋⒂猛竞蛯?shí)現(xiàn)方式上存在一些區(qū)別,下面將詳細(xì)介紹它們之間的區(qū)別。 1. 功能和用途: – Java是一種編程語(yǔ)言,它提供了一種用于開(kāi)發(fā)各種應(yīng)用程序
    的頭像 發(fā)表于 07-16 13:35 ?1367次閱讀
    華納云:java <b class='flag-5'>web</b>和java有什么區(qū)別java <b class='flag-5'>web</b>和java有什么區(qū)別

    鴻蒙ArkTS聲明組件:Web

    提供具有網(wǎng)頁(yè)顯示能力的Web組件,[@ohos.web.webview]提供web控制能力。
    的頭像 發(fā)表于 07-04 15:35 ?1237次閱讀
    鴻蒙ArkTS聲明<b class='flag-5'>式</b>組件:<b class='flag-5'>Web</b>

    BLDC創(chuàng)新應(yīng)用,未來(lái)可期

    電機(jī)政策新導(dǎo)向,原來(lái)助力節(jié)能減排也沒(méi)那么難?隨著國(guó)家對(duì)節(jié)能減排、智能制造等領(lǐng)域的支持力度持續(xù)加大,半導(dǎo)體器件廠商可以抓住政策機(jī)遇,加強(qiáng)與政府、行業(yè)協(xié)會(huì)等的合作,共同推動(dòng)BLDC電機(jī)市場(chǎng)的發(fā)展。 前言: 直流無(wú)刷電機(jī)由于其高能效、低功耗、高扭矩、低噪音、長(zhǎng)壽命、響應(yīng)快等優(yōu)勢(shì),在多個(gè)領(lǐng)域都有廣泛的應(yīng)用。隨著消費(fèi)者生活質(zhì)量的提升和消費(fèi)市場(chǎng)的升級(jí),終端市場(chǎng)對(duì)電機(jī)控制性能的要求也越來(lái)越高。BLDC電機(jī)以其特有的性能優(yōu)異性,
    的頭像 發(fā)表于 06-14 11:38 ?620次閱讀