成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

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

ThinkSNS / 1717人閱讀

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

個(gè)人很少看視頻學(xué)習(xí)新技術(shù),覺(jué)得和讀文檔比起來(lái)看視頻太浪費(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。下面是官方解釋?zhuān)?/p>

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,感覺(jué)PWA和這個(gè)有些類(lèi)似:在桌面上的,能獨(dú)立運(yùn)行的web app。但PWA不僅如此,先看看效果對(duì)比圖:

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

那它到底提供些什么樣的新技術(shù)讓PWA和原生的媲美呢?答案是使用Offline First開(kāi)發(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)單來(lái)說(shuō)它就是個(gè)代理,在網(wǎng)絡(luò)和瀏覽器之間,以事件的方式讓開(kāi)發(fā)者介入,來(lái)實(shí)現(xiàn)資源和數(shù)據(jù)的控制。

開(kāi)始使用

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

當(dāng)register之后,你的service worker腳本將經(jīng)歷download, install and activate過(guò)程,接著就進(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安裝之后,并且如果沒(méi)有老的worker,或者老的worker已經(jīng)沒(méi)有頁(yè)面在使用它的時(shí)候,就會(huì)激活新的worker

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

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

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

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

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

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

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

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

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

后臺(tái)同步

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

其他 添加到桌面

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

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

桌面圖片,桌面顯示名稱(chēng)

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

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

等等


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

前端存儲(chǔ)

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

兼容性

目前基本只有chrome支持。

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<