很高興受到《PWA入門與實踐》作者王樂平老師的邀請,爲這本書寫推薦語。
下面我們就聽聽作者王老師帶你快速玩轉 PWA 吧!
文末有給各位粉絲的福利!抽獎送出三本《PWA入門與實踐》。
導讀:如今,互聯網大流量早已進入了移動端,國內主流互聯網產品的移動端流量已經普遍超過整體流量的80%。在移動端應用開發中,我們要面臨爲不同操作系統(Android、iOS、Windows 10)、不同設備(手機、平板)開發應用的問題,爲此我們需要投入額外的成本應對這些差異。就算我們投入了成本,開發出了產品,在下載和安裝環節,仍然存在很大的推廣成本問題。統計學研究表明,安裝煩瑣是用戶放棄嘗試更多應用的主要原因之一。PWA做爲一門Google推出的WEB端的新技術,可以很好地解決這些問題。
來源:華章計算機(hzbook_jsj)
PWA運用現代的Web API能力爲Web進行了擴展和增強,使Web具有與原生應用程序類似的體驗度和能力。作爲一種W3C的規範實現,PWA可以正常地運行在各個平臺的瀏覽器中,真正做到一套代碼解決所有平臺一致性問題。同樣,由於PWA具備安裝成本幾乎爲0的特點,它非常適合實現Web端到應用端的過渡,提升轉化率。
目前,國內外越來越多的網站對PWA進行了接入,如淘寶、餓了麼、微博、星巴克、優步、推特、臉書、Ins等等,接入後的性能和轉化率都有明顯提升。如今Google/Microsoft/Apple已全部支持的PWA技術,Web的主流框架React、Vue等對PWA提供了快速接入方案,主流的瀏覽器廠商也緊跟其後,共同爲PWA生態系統提供支持。
什麼是PWA
PWA全稱Progressive Web App,直譯是漸進式WEB應用,是 Google 在 2015 年提出,2016年6月才推廣的項目。是結合了一系列現代Web技術的組合,在網頁應用中實現和原生應用相近的用戶體驗。
所謂的P(Progressive)這裏有兩層含義,一方面是漸進增強,讓WEB APP的體驗和功能能夠用漸進增強的方式來更接近原生APP的體驗及功能;另一方面是指下一代WEB技術,PWA並不是描述一個技術,而是一些技術的合集。
PWA特性
漸進增強 - 能夠讓每一位用戶使用,無論用戶使用什麼瀏覽器,因爲它是始終以漸進增強爲原則。
響應式用戶界面 - 適應任何環境:桌面電腦,智能手機,筆記本電腦,或者其他設備。
不依賴網絡連接 - 通過 service workers 可以在離線或者網速極差的環境下工作。
類原生應用 - 有像原生應用般的交互和導航給用戶原生應用般的體驗,因爲它是建立在 app shell model 上的。
持續更新 - 受益於 service worker 的更新進程,應用能夠始終保持更新。
安全 - 通過 HTTPS 來提供服務來防止網絡窺探,保證內容不被篡改。
可發現 - 得益於 W3C manifests 元數據和 service worker 的登記,讓搜索引擎能夠找到 web 應用。
再次訪問 - 通過消息推送等特性讓用戶再次訪問變得容易。
可安裝 - 允許用戶保留對他們有用的應用在主屏幕上,不需要通過應用商店。
可連接性 - 通過 URL 可以輕鬆分享應用,不用複雜的安裝即可運行。
PWA優、缺點
優點:
●上面提到的,所有這些現代 Web 特性。
●Web最重要的意義在於開放和去中心化,這纔是萬維網的初衷
缺點:
●門檻不低。部署的服務器要求HTTPS,ServiceWorker涉及API衆多,需要單獨學習
●用戶體驗習慣。網頁應用替代原生應用的方式,用戶短時間內不適應
PWA關鍵技術
Manifest(應用清單)
Web App Manifest是一個W3C規範,定義了一個基於JSON的清單,爲開發人員提供一個放置與Web應用程序關聯的元數據的集中地點。manifest 就是 PWA 概念的一環,它給你了控制你的應用如何出現在用戶期待出現的地方(比如用戶手機主屏幕),這直接影響到用戶能啓動什麼,以及更重要的,用戶如何啓動它。
使用 web 應用程序清單,你的應用可以:
●能夠真實存在於用戶主屏幕上
●在 Android 上能夠全屏啓動,不顯示地址欄
●控制屏幕方向已獲得最佳效果
●定義啓動畫面,爲你的站點定義主題
●追蹤你的應用是從主屏幕還是 URL 啓動的
例如:
Service Workers
Service Worker是瀏覽器在後臺獨立於網頁運行的腳本,它打開了通向不需要網頁或用戶交互的功能的大門。這個 API 之所以令人興奮,是因爲它可以支持離線體驗,讓開發者能夠全面控制這一體驗。
ServiceWorker是由兩部分構成,一部分是 cache,還有一部分則是 Worker。
它被設計爲一個相對底層、高度可編程、子概念衆多,也因此異常靈活且強大的 API,它就像一個位於客戶端和網絡之間的代理,可以攔截、處理、響應流經的網絡請求,配合Cache API,你可以自由管理網絡請求文件的緩存,這使得 Service Worker 可以從緩存中向 web 應用提供資源,即使是在離線的環境下。這樣,在離線和網速低的情況下也能秒開,說白了,之前的Hybrid架構的出現不就是爲了這個功能麼。之前雖然有AppCache,但它具有相當多的缺陷,這裏就不說了。
來張官網的形象圖:
Push Notification(推送通知)
Push 和 Notification是兩個不同的功能,涉及到兩個API,但是它們之前有依賴關係。
Notification這塊應該大家多少了解一些,屬於瀏覽器發出的通知消息,之前需要瀏覽器一直開着才能實現這種通知,但是現在有了上面提到的Service Worker,就可以駐留在進程裏面操作了。
Push & Notification關係:
●Push : 服務器端將更新的信息傳遞給 Service Worker
●Notification: Service Worker 將更新的信息推送給用戶
PWA與其他App的對比
目前的移動端APP:
●Native APP
●Web App
●Hybrid App
Native APP
Native APP,指原生App,是一個完整的App,可拓展性強,需要用戶下載安裝使用。
優點:
●可使用移動設備所有功能
●速度快、性能高、用戶體驗好
●離線使用
缺點:
●開發成本高、維護成本高
●每個不通的平臺都要重新開發
●應用商店審覈複雜,效率低
Web APP
Web App 指採用Html5語言寫出的App,生活在瀏覽器裏的應用,不需要下載安裝。
優點:
跨平臺開發、無需下載、無需安裝,開發速度快
發佈靈活,因爲根本不需要應用商店的審覈
●較低的開發成本
●可即時上線
●用戶可以直接使用最新版本
●支持設備廣泛
缺點:
●只能使用有限的移動設備API
●瀏覽器兼容問題
●無法上傳到應用商店
●用戶暫時不適用
Hybrid App
Hybrid APP指的是半原生半Web的混合類App,需要下載安裝。
優點:
兼容多平臺
Web前端工作人員就可快速構建
可以上傳到應用商店
可以基於瀏覽器的方式進行頁面調試
可使用的移動設備的API多
缺點:
用戶體驗不如原生應用
爲模擬原生樣式,需要大量的html和css
性能稍慢
技術不是很成熟
PWA兼容性
Blink內核(Chrome、Oprea、Samsung Internet 等)和 Gecko內核(Firefox)和Microsoft Edge都已經實現了 PWA 所需的所有關鍵技術的支持, 華爲手機瀏覽器、IOS的Safari(Webkit)等主流瀏覽器目前均已支持PWA的API。
PWA的未來
這裏引用一下黃玄說過的一句話:
請不要讓 web 再繼續離我們遠去,瀏覽器廠商們已經重新走到了一起,而下一棒將是交到我們 web 應用開發者的手上。喬布斯曾相信 web 應用才移動應用的未來,那就讓我們用代碼證明給這個世界看吧。
讓我們的用戶,也像我們這般熱愛 web 吧”
推薦閱讀:
《PWA入門與實踐》
本書全面介紹了PWA的基礎知識、核心技術以及相關實踐,適合開發者快速入門PWA,對PWA進行全面的學習。
國內首本詳細講述PWA技術原創書籍,更符合國人閱讀習慣
從商業視角的推廣成本到體驗視角的秒開、離線體驗,全方位介紹PWA基礎知識、核心技術及實踐方案
從理論準備到實操流程,再到經驗分享,是一本幫你真正理解PWA的“全鏈路書籍”
【適讀人羣】
本書面向有一定Web開發基礎的讀者,以及想學習PWA或者需要一本全面的PWA手冊的開發者。
福利送書
抽獎送出三本《PWA入門與實踐》。長按按關注“玩轉VS Code”公衆號,回覆“PWA”,進行抽獎。
有興趣的童鞋,也可以點擊“閱讀原文”,直接在京東購買。