它比微信小程序早出現半年,卻不曾引爆技術圈
作為一個程序員,這兩天的朋友圈被微信小應用刷屏了吧?想試了吧?沒拿到邀請吧?沒關系,我來幫你!
當然,我沒法幫你拿到邀請碼 —— 因為我也沒有。不過,別失望,我今天要跟大家談一項比微信小程序更宏觀的概念 —— Google提出的PWA。
PWA是什么?
PWA全稱是“Progressive Web Apps”,譯成中文就是 漸進式應用。 這是Google在2015年6月15日提出的概念,參見Alex Russell寫的 《Infrequently Noted》 。
那么,什么是漸進式應用呢?
Alex寫道:
在昨天的晚餐上,我和Frances列舉出了新型應用的幾個特征:
- 響應式:適應任何形態因素
- 不依賴網絡:在Service Worker(H5中的新技術,appcache的升級版)的支持下能夠離線使用
- 像本地應用一樣交互:采用“殼+內容”模式來實現類似本地應用的瀏覽和交互體驗
- 保持最新:始終透明的升級到最新版,這要感謝Service Worker提供的升級機制
- 安全:通過TLS(這是Service Worker所要求的)來防止通訊被窺探
- 可發現的:具有像“應用”一樣的唯一標識,這要感謝W3C的Manifest文件格式,它在“Service Worker”中注冊的scope能允許搜索引擎發現這些應用。
- 可“再接觸”的:可以訪問操作系統的“可再接觸”界面,比如推送通知
- 可安裝的:通過瀏覽器提供的提示,可以把它加入主屏,允許用戶把覺得有用的應用“保留”下來,而不用到應用商店去安裝,那樣太麻煩了。
- 可鏈接的:這意味著它們是零阻力、零安裝,并且易于共享的。URL更能發揮社交傳播的能量。
PWA怎么用?
一個PWA的使用過程大概是這樣的:
這貨開始就是一個普通網頁:
然后,這是什么鬼?
這網站看著還不錯,那就接受吧!
它出現在手機的首屏了,以后隨叫隨到!
點了就能像一個本地應用那樣啟動它:
看,啟動完也跟一個本地應用沒有區別:
PWA的好處
Web應用(網頁)和本地應用(App)各有優勢,比如:
- Web應用不需要安裝,因此減少了用戶流失(想想你要安裝一個應用時有多么猶豫吧)
- Web應用方便傳播,你只要在微信或者QQ里發一個網址就有很多人會去看(比如本文 ^_^)
- Web應用的收藏、前進、后退這些功能非常有用
- 本地應用的留存度比較高。你看過一個網址后再回來的概率大約是本地應用的1/3。
- 本地應用可以推送通知,而Web應用只有在瀏覽器打開狀態下才行
- 本地應用可以離線使用,只要做適當的設計就可以不受網絡環境的影響
- 本地應用可以訪問更加豐富的功能,比如更大的本地存儲空間
那么,它們能否合二為一呢?這就是PWA所做的事!
通過前面提到的這些步驟,PWA可以讓用戶同時獲得這兩種好處。這無論對于用戶本身還是對于應用的開發者都非常有意義。
如何實現PWA?
其實從Alex的描述中就可以看到,在技術上我們離實現PWA并不遠:
Web應用開發技術
已經具備。
特別是得益于Angular等SPA應用的普及,SPA不但響應更加快速,更加接近原生應用的操作體驗,而且讓我們可以完全不依賴服務器工作。
離線存儲技術
可能有人還記得一項叫AppCache的技術,它已經廢棄了,現在被Service Worker所取代。這是一個更強大的AppCache,它不僅能存儲HTML/JS等靜態文件,而且還讓你能夠在客戶設備上運行起一個仿真的超輕量級Web服務器,你在里面已經幾乎可以寫Node程序了!
這是新的H5標準的一部分,而不是PWA特有的。
推送通知
H5標準中已經有了用來推送通知的API(用過Web Gmail的話應該見過),現在只要把它和操作系統的API對接就行了。當然,這最好由操作系統提供支持,這已經實現了,那就是新推出的Android 7。
App殼程序
這個殼程序其實自己來實現也沒問題,技術上沒啥難度,不過不用重復造輪子了,因為官方已經出了一個,參見 https://github.com/GoogleChrome/application-shell 。如果用Angular 2就更幸福了,因為Angular 2還制作了一個Angular 2專用的殼: https://github.com/angular/mobile-toolkit 。不過,它現在還處于未發布狀態,早鳥可以開始提前嘗試了。
微信小程序與PWA
雖然”微信小程序”概念的提出比PWA晚了半年,不過相信張小龍這個級別的產品經理不會是簡單的抄襲PWA概念,而是會發揮微信生態圈的優勢,提供更廣闊的應用場景。或許我們應該把微信小程序看做PWA的一種優質實現。
來自:http://insights.thoughtworkers.org/wechat-app-and-pwa/