pwa的出現會對移動端原生開發造成什麼影響?


我說一下個人看法:結論是 毫無影響

先了解一下什麼是 PWA

PWA 其實是在普通的移動 Web App 上加持很多新的 Web 技術以期望達到 Native App 的體驗。

Andriod Chrome 31 版本的時候,Chrome 已經通過「添加到主屏幕」實現把瀏覽器上的網頁添加到安卓設備的主屏幕。如下圖所示:

當時已經實現了半個 PWA ,但是那時的 PWA 沒有離線的能力,一旦沒有網路就會看到小恐龍。

但是 Google 的技術團隊繼續探索更多可能性。

然後我們又看到為了解決離線體驗問題, Google 用了以下辦法:

  • App Shell :其實就是在第一次渲染一個基礎的 HTML 結構外殼,然後非同步請求數據;離線的時候就使用存儲在 IndexedDB 的數據。

  • Service Worker :這個可以在瀏覽器的後台線程悄悄運行又不會影響主線程渲染 UI 。這玩意能攔截網路請求並且可以根據網路是否可用以及是否去伺服器獲取頁面更新而做出不同的響應。

  • Service Worker 再結合 Web Push API 和 Web Notification API 實現後台推送通知和數據更新 (很有 Native App 的既視感!)

除了上面提及的技術之外,開發者還可以使用以下技術增強 PWA 的體驗:

  • Payment Request API:通過允許商家在單個 API 調用中請求和接受任何付款來代替傳統的結賬流程。
  • Geolocation API:PWA 可以獲取用戶的地理位置,並且基於位置提供服務,但是必須在 PWA 啟動時得到用戶同意。
  • Device DOrientation API Motion API: 可以獲取用戶設備上的內置加速度計、陀螺儀和羅盤。
  • getUserMedia API: 可以獲取用戶的音頻和照片

這樣看來 PWA 是不是很強大?快趕上 Native App 了?

然而,未來是美好的,現實是骨感的。

以下說一下現在存在的問題:

  • 上面提及的技術,各大瀏覽器內核開發小組實現程度不一。 Blink 和 Gecko 可能實現程度最高(畢竟這玩意是他們想搞的), Webkit 剛剛納入議程不久,EdgeHTML 在努力開發中。假如只看移動 Web App ,那 Webkit (safari) 啥時候全部實現上面技術,我們再來談談未來。

  • 國情。雖然國內 Android 設備佔大頭,但是國產手機廠商多多少少都修改過系統內核,大多數 Android 手機都沒有原生的 Chrome 瀏覽器。而國產的手機瀏覽器恐怕對支持 PWA 興趣不大,畢竟把自己的 KPI 和用戶日活時間提高比較重要。

  • 假設上面兩個條件都實現了,我們來探討一下推送的問題。我之前做過Service Worker 結合 Push Notification 的技術預研,發現死活收不到推送。直到後來看了 75team 的一篇文章才恍然大悟。原來每個瀏覽器目前只認一個推送伺服器,比如 Chrome 只認自家的 GCM 。手動微笑。

所以綜上所述,要在國內討論「pwa的出現會對移動端原生開發造成什麼影響?」。我的答案是「毫無影響,至少五年內看不到希望,希望各大瀏覽器內核開發團隊努力打臉。」

本篇問答致謝於以下來源。

[黃玄這篇文章真是贊](知乎專欄)

[75 team 技術真厲害(此處應有廣告費)](【Service Worker】消息推送功能「全軍覆沒」)

[PWA 官網](https://developers.google.com/web/fundamentals/)


每次看到PWA文章下面的神評(Web這是要取代Native開發啊)都很反感,首先,請這些同學務必先深入了解並實踐過PWA技術再來發表觀點,老是亂拉Native開發同學的仇恨還怎麼搞大前端。

其次,簡單聊聊PWA:

國內來講,被Google官方選為推薦實踐案例的應該只有阿里巴巴的兩大國際化業務,背後的團隊在PWA技術上實踐頗深,分別是阿里巴巴國際站和Aliexpress,感興趣的同學可以使用chrome for android(你懂得)進行體驗。

只能說業務形態決定技術形態,你看嘛,淘寶的M站才不可能用PWA。

PWA的系列特性和要求,決定了這是只能在Google的光環下進行探索的無線端體驗增強技術,國內環境目前來講,要在生產環境實踐的話還頗為困難。而且你會發現,其實,PWA涉及的技術對於前端工程師來講並不陌生,比如ServiceWorker等。

但歸根到底PWA仍然屬於Web領域的技術範疇,所以,何來影響和衝擊一說?

不要試圖"神話"PWA,小程序,Weex,RN......,因為他們都是Native開發和Web開發深入合作的產物。

如果確實想從技術上深入實踐一下PWA,那麼阿里巴巴國際站和Aliexpress,歡迎你的加入,簡歷砸我。


未來很美好,但是當下依然殘酷。

國內的技術環境不說。

又有幾個廠子願意話費人力物力去細細打磨做這種80到100的提升呢?大都是需要糙快猛出產品的公司。

不過假以時日當這些都成為標配的時候,技術成熟框架一引即可,那就不好說了。


前端已經三個月沒有新話題了!

再不更新可怎麼辦啊!

PWA 明顯不能挑起話題啊,名字叫得不知所云,具體技術又太瑣碎,完全沒有「響應式頁面」這種一行 media query 搞定、名號又響亮的技術概念吸引人。

所以結論是什麼?應該只會在國內大廠的某幾個前端主導的部門用一用吧。

畢竟這是把頁面從80往100分方向提升的技術,而小廠基本都滿足於 80 分。再往後性價比太低了。

對移動端的影響?

又多了一個把工作拋給前端的機會和借口唄。

我隨口瞎說,坐等大神分析。


完全無影響


pwa是個神馬東西

先和qt delphi比比吧


毫無影響。


毫無價值的技術!! Google 覺得自己是老大所以要推。


出現幾年 暫時毫無影響


沒啥影響,所有優化的點都是基於已有技術的組合,無論是資源緩存或者是圖標添加到桌面或者是其他技術都不會產生質的變化。


推薦閱讀:

Android系統的後台程序和後台自啟動程序和後台推送到底是個什麼關係?
如何評價「微軟仍未放棄Win10兼容安卓應用」的新聞?
如何評價 LG G5 手機及家族系列產品?
Android 4.0 需要殺進程的軟體嗎?
我們在平時或面試遇到這些問題時,我們應該怎麼回答?

TAG:Web開發 | 移動互聯網 | 前端開發 | iOS開發 | Android |