PWA作爲一門Google推出的WEB端的新技術,長處不言而喻。但眼下對於相關方面的知識不是很是豐富。這裏我推出一下這方面的新手教程系列。提供PWA方面學習。css
PWA全稱Progressive Web App,直譯是漸進式WEB應用,是 Google 在 2015 年提出,2016年6月才推廣的項目。是結合了一系列現代Web技術的組合。在網頁應用中實現和原生應用相近的用戶體驗。html
所謂的P(Progressive)這裏有兩層含義,一方面是漸進加強,讓WEB APP的體驗和功能可以用漸進加強的方式來更接近原生APP的體驗及功能。另外一方面是指下一代WEB技術。PWA並不是描寫敘述一個技術。而是一些技術的合集。前端
網頁應用替代原生應用的方式,用戶短期內不適應web
Web App Manifest是一個W3C規範,定義了一個基於JSON的清單,爲開發人員提供一個放置與Web應用程序關聯的元數據的集中地點。manifest 就是 PWA 概念的一環,它給你了控制你的應用怎樣出現在用戶期待出現的地方(比方用戶手機主屏幕)。這直接影響到用戶能啓動什麼。以及更重要的。用戶怎樣啓動它。shell
使用 web 應用程序清單,你的應用可以:編程
好比:瀏覽器
{
"lang": "en",
"dir": "ltr",
"name": "Donate App",
"description": "This app helps you donate to worthy causes.",
"short_name": "Donate",
"icons": [{
"src": "icon/lowres.webp",
"sizes": "64x64",
"type": "image/webp"
},{
"src": "icon/lowres.png",
"sizes": "64x64"
}, {
"src": "icon/hd_hi",
"sizes": "128x128"
}],
"scope": "/racer/",
"start_url": "/racer/start.html",
"display": "fullscreen",
"orientation": "landscape",
"theme_color": "aliceblue",
"background_color": "red",
"serviceworker": {
"src": "sw.js",
"scope": "/racer/",
"use_cache": false
},
"screenshots": [{
"src": "screenshots/in-game-1x.jpg",
"sizes": "640x480",
"type": "image/jpeg"
},{
"src": "screenshots/in-game-2x.jpg",
"sizes": "1280x920",
"type": "image/jpeg"
}]
}
Service Worker是瀏覽器在後臺獨立於網頁執行的腳本,它打開了通向不需要網頁或用戶交互的功能的大門。緩存
這個 API 之因此使人興奮,是因爲它可以支持離線體驗,讓開發人員可以全面控制這一體驗。安全
ServiceWorker是由兩部分構成。一部分是 cache,另外一部分則是 Worker。markdown
它被設計爲一個相對底層、高度可編程、子概念衆多,也所以異常靈活且強大的 API,它就像一個位於client和網絡之間的代理。可以攔截、處理、響應流經的網絡請求,配合Cache API,你可以自由管理網絡請求文件的緩存,這使得 Service Worker 可以從緩存中向 web 應用提供資源,即便是在離線的環境下。
這樣。在離線和網速低的狀況下也能秒開。說白了,以前的Hybrid架構的出現不就是爲了這個功能麼。
以前儘管有AppCache。但它具備至關多的缺陷,這裏就不說了。
來張官網的形象圖:
Push 和 Notification是兩個不一樣的功能,涉及到兩個API,但是它們以前有依賴關係。
Notification這塊應該你們多少了解一些。屬於瀏覽器發出的通知消息。以前需要瀏覽器一直開着才幹實現這樣的通知,但是現在有了上面提到的Service Worker。就可以駐留在進程裏面操做了。
Push & Notification關係:
眼下的移動端APP:
Native APP,指原生App。是一個完整的App。可拓展性強,需要用戶下載安裝使用。
長處:
缺點:
Web App 指採用Html5語言寫出的App。生活在瀏覽器裏的應用。不需要下載安裝。
長處:
缺點:
Hybrid APP指的是半原生半Web的混合類App,需要下載安裝。
長處:
缺點:
Blink內核(Chrome、Oprea、Samsung Internet 等)和 Gecko內核(Firefox)和Microsoft Edge都已經實現了 PWA 所需的所有關鍵技術的支持。但IOS的Safari(Webkit)。眼下不支持PWA的API。
只是在2015年Webkit的5年計劃裏面,已經說起了Service Worker。相信很是快就能實現。
Google的技術在國內推動是很是痛苦的,Android儘管近年來在國內不錯,但PWA在國內的發展有很是多困難。
總的來講,PWA仍是很是不錯的,儘管PWA在國內的體驗眼下有一些限制,但相信PWA在國內的春天確定會來的。
這裏引用一下黃玄說過的一句話:
請不要讓 web 再繼續離咱們遠去,瀏覽器廠商們已經又一次走到了一塊兒,而下一棒將是交到咱們 web 應用開發人員的手上。喬布斯曾相信 web 應用才移動應用的將來,那就讓咱們用代碼證實給這個世界看吧。
讓咱們的用戶,也像咱們這般熱愛 web 吧」
Progressive Web Apps:站點內含有需要PWA應用,你們可以體驗一下。
這一章作了一下PWA的相關介紹。後面章節會具體對PWA API進行具體說明。
博客名稱:王樂平博客
CSDN博客地址:http://blog.csdn.net/lecepin