它比微信小程式早出現半年,卻不曾引爆技術圈

ThoughtWorks發表於2016-09-23

作為一個程式設計師,這兩天的朋友圈被微信小應用刷屏了吧?想試了吧?沒拿到邀請吧?沒關係,我來幫你!

當然,我沒法幫你拿到邀請碼 —— 因為我也沒有。不過,別失望,我今天要跟大家談一項比微信小程式更巨集觀的概念 —— 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的使用過程大概是這樣的:

這貨開始就是一個普通網頁:

01_pwa_start

然後,這是什麼鬼?

02_pwa_prompt

這網站看著還不錯,那就接受吧!

03_pwa_accept

它出現在手機的首屏了,以後隨叫隨到!

04_pwa_homescreen

點了就能像一個本地應用那樣啟動它:

05_pwa_launched

看,啟動完也跟一個本地應用沒有區別:

06_pwa_launcher

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的一種優質實現。

假如你沒有拿到微信小程式的邀請碼,不妨像我一樣,先從研究PWA開始吧。

相關文章