成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

認(rèn)識(shí)Progressive Web App

ThinkSNS / 1777人閱讀

摘要:開始使用和類似的,中的邏輯需要多帶帶放在一個(gè)文件中,然后在當(dāng)前頁面通過其進(jìn)行創(chuàng)建。那這時(shí)候如果網(wǎng)絡(luò)信號(hào)恢復(fù)了,就算頁面關(guān)掉,這些被信息會(huì)在后臺(tái)被發(fā)送出去。下面的內(nèi)容則針對(duì)打開的過程,進(jìn)行優(yōu)化和靠近。兼容性目前基本只有支持。

個(gè)人很少看視頻學(xué)習(xí)新技術(shù),覺得和讀文檔比起來看視頻太浪費(fèi)時(shí)間了。但是最近在看google I/O 2016的時(shí)候,發(fā)現(xiàn)介紹Progressive Web Apps的一段視頻很不錯(cuò)。近50分鐘的內(nèi)容,深入淺出,為了方便分享和以后回顧,決定將其內(nèi)容整理成文章。

什么是Progressive Web App(PWA)

字面上就是先進(jìn)的web app。下面是官方解釋:

Progressive Web Applications take advantage of new technologies to bring the best of mobile sites and native applications to users. They"re reliable, fast, and engaging.

Chrome在PC上有Chrome App,感覺PWA和這個(gè)有些類似:在桌面上的,能獨(dú)立運(yùn)行的web app。但PWA不僅如此,先看看效果對(duì)比圖:

可以看到,顯著的不一樣,在offline情況下,PWA依然能夠渲染界面,讀取歷史數(shù)據(jù)。另外,和目前的add to home screen不一樣的是,這里已經(jīng)不是簡(jiǎn)單的在桌面上添加一個(gè)網(wǎng)頁的快捷方式,而更像一個(gè)webview包裝的app,提供了加載過場(chǎng)頁面,并且地址欄也沒有了。

那它到底提供些什么樣的新技術(shù)讓PWA和原生的媲美呢?答案是使用Offline First開發(fā)模式和Service Worker技術(shù),優(yōu)化了web app的體驗(yàn)。

Service Worker

就像曾經(jīng)的Web Worker一樣,這是一個(gè)新的瀏覽器特性,它的解釋如下:

Service workers essentially act as proxy servers that sit between web applications, and the browser and network (when available). They are intended to (amongst other things) enable the creation of effective offline experiences, intercepting network requests and taking appropriate action based on whether the network is available and updated assets reside on the server. They will also allow access to push notifications and background sync APIs.

簡(jiǎn)單來說它就是個(gè)代理,在網(wǎng)絡(luò)和瀏覽器之間,以事件的方式讓開發(fā)者介入,來實(shí)現(xiàn)資源和數(shù)據(jù)的控制。

開始使用

和Web Worker類似的,Service Worker中的邏輯需要多帶帶放在一個(gè)JS文件中,然后在當(dāng)前頁面通過其URL進(jìn)行創(chuàng)建。

當(dāng)register之后,你的service worker腳本將經(jīng)歷download, install and activate過程,接著就進(jìn)入和它的事件驅(qū)動(dòng)階段。

Chrome調(diào)試工具中也添加有Service Worker相關(guān)的選項(xiàng):

事件驅(qū)動(dòng)

在視頻中簡(jiǎn)單涉及到了以下事件:

install: 當(dāng)被下載的worker文件是新的時(shí)候(第一次下載,或者和老的worker內(nèi)容不一樣),會(huì)進(jìn)行安裝,觸發(fā)install事件

activate: 在worker安裝之后,并且如果沒有老的worker,或者老的worker已經(jīng)沒有頁面在使用它的時(shí)候,就會(huì)激活新的worker

fetch: 任何瀏覽器發(fā)送請(qǐng)求時(shí)都是觸發(fā)fetch事件,例如下載html頁面,js文件,css或者font等,當(dāng)然還有ajax請(qǐng)求

更多事件請(qǐng)參考這里

例如,在fetch事件中攔截所有的請(qǐng)求,設(shè)置response為Hello:

或者說是,攔截404,顯示為一個(gè)特定的畫面:

再看下面這個(gè)更有意義一點(diǎn)的例子:

這里在install的時(shí)候,將offline的提示頁面和它的css文件緩存在cache中(如果緩存滿了或者其他原因?qū)е路湃刖彺媸?,那么這個(gè)worker將不會(huì)被install,之后也就不會(huì)控制頁面)。然后在之后的fetch中,進(jìn)行請(qǐng)求攔截:

如果請(qǐng)求在cache中,返回cache中的response,否則通過網(wǎng)絡(luò)去fetch這個(gè)request的response

如果一個(gè)navigate類型的request(HTML跳轉(zhuǎn)的請(qǐng)求)fetch失敗,即offline,那么去緩存中讀取我們的offline提示頁面作為response

類似的,我們可以將app的頁面做成一個(gè)殼,數(shù)據(jù)去由javascript去填充,這樣的話,我們就可以通過service worker將頁面緩存起來,打開app的時(shí)候從本地緩存中讀取渲染頁面,然后通過網(wǎng)絡(luò)去請(qǐng)求數(shù)據(jù)。這個(gè)過程,基本就和native app一直了。(這里太適合那些MVVM的框架了?。?/p>

后臺(tái)同步

在視頻的最后,還展示了一個(gè)background sync的功能,這個(gè)功能很強(qiáng)大(sync也是Service Worker的一個(gè)事件)。其展示的例子效果類似于,在微信上發(fā)送信息,就算沒有網(wǎng)絡(luò),發(fā)送信息在頁面上的操作都能完成,但由于網(wǎng)絡(luò)原因不能夠真正的發(fā)送出去。那這時(shí)候如果網(wǎng)絡(luò)信號(hào)恢復(fù)了,就算頁面關(guān)掉,這些被信息會(huì)在后臺(tái)被發(fā)送出去。

其他 添加到桌面

有了上面的頁面離線機(jī)制,我們像native靠近了一步,但是還不夠。下面的內(nèi)容則針對(duì)app打開的過程,進(jìn)行優(yōu)化和靠近native。

通過manifest文件進(jìn)行配置,能配置:

桌面圖片,桌面顯示名稱

打開app時(shí)的過場(chǎng)頁面中的的圖標(biāo),名稱,背景色

打開app后的初始化URL(這里的URL和在你add to home screen時(shí)的URL可以不一樣)

等等


通過上面的配置,我們的PWA就能想native app一樣打開,并且在無論有網(wǎng)絡(luò),沒有網(wǎng)絡(luò)或者網(wǎng)絡(luò)環(huán)境很差的情況下,都再也看不到那讓人厭煩的,只能看著地址欄不斷加載的空白頁面。

前端存儲(chǔ)

可以通過瀏覽器端的DB存儲(chǔ)app的一些歷史數(shù)據(jù),比如聊天記錄,然后在Service Worker中給對(duì)應(yīng)的數(shù)據(jù)請(qǐng)求進(jìn)行來接,那么在下次打開時(shí),就算沒有網(wǎng)絡(luò),在頁面從緩沖中渲染之后,也能夠從DB中讀取一部分歷史數(shù)據(jù)。這樣一來,這真的native app就沒有區(qū)別了。

兼容性

目前基本只有chrome支持。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/86319.html

相關(guān)文章

  • 2018年『web』開發(fā)者不得不知的技術(shù)趨勢(shì)

    摘要:年開發(fā)者不得不知的技術(shù)趨勢(shì)作為一個(gè)開發(fā)者,無論是做前端還是后端,都應(yīng)該時(shí)刻保持著對(duì)技術(shù)的敏感性。這是一個(gè)預(yù)報(bào)天氣的聊天機(jī)器人。微信小程序年月微信小程序正式上線。年剛剛開始,作為一個(gè)開發(fā)者,保持對(duì)前沿技術(shù)的敏感性,提升格局,放眼遠(yuǎn)方。 showImg(https://segmentfault.com/img/bV1mBS?w=700&h=350); 2018年『web』開發(fā)者不得不知的技...

    linkin 評(píng)論0 收藏0
  • 來自于微信小程序的一封簡(jiǎn)訊

    摘要:月晚間,微信向部分公眾號(hào)發(fā)出公眾平臺(tái)微信應(yīng)用號(hào)小程序的內(nèi)測(cè)邀請(qǐng),向來較為低調(diào)的微信在這一晚沒人再忽視它了。除了微信的小程序和蘋果的應(yīng)用,此前也在自己的通訊工具上推出了簡(jiǎn)單的應(yīng)用開發(fā)接口,讓用戶直接通過聊天窗口完成打車和訂餐等操作。 9月21晚間,微信向部分公眾號(hào)發(fā)出公眾平臺(tái)-微信應(yīng)用號(hào)(小程序)的內(nèi)測(cè)邀請(qǐng),向來較為低調(diào)的微信在這一晚沒人再忽視它了。 來自個(gè)人博客:Damonare的個(gè)人...

    lavor 評(píng)論0 收藏0
  • Awesome PWA

    摘要:倉(cāng)庫(kù),收集整理了我接觸到較好的相關(guān)資料,將在開發(fā)過程中中持續(xù)更新。大家有好的案例也可以提文章介紹,復(fù)興序章上海消息推送視頻討論如何看待工具檢測(cè)各項(xiàng)性能清單。用于自動(dòng)預(yù)先加載靜態(tài)資源。用于處理運(yùn)行時(shí)緩存和回調(diào)策略。 github 倉(cāng)庫(kù),收集整理了我接觸到較好的 PWA 相關(guān)資料,將在開發(fā)過程中中持續(xù)更新。大家有好的案例也可以提 issue showImg(https://segmentf...

    GT 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<