版本升級。用戶角度上看,客戶端升級必須讓用戶手動下載整個新的安裝包覆蓋安裝,而web的升級無需用戶作任何事情。開發角度上看,若是客戶端有個小bug須要緊急修復,須要修復完後打包一個完成的安裝包,給一個版本號,發佈給用戶升級。而web只須要修改後臺的某些文件,而後傳到本身的服務器,用多快速的迭代開發方式都沒問題。web沒有版本兼容性問題,客戶端這個問題就大了。
iOS客戶端用編譯語言,web用腳本語言。編譯語言好處:不少錯誤編譯期就知道,不用擔憂相似寫錯一個字母致使的問題。iOS客戶端開發只能用XCode,沒法選用本身喜歡的編輯器。使用腳本語言的web不管前端後端對編輯器的選擇都很自由。
客戶端一碰到異常就崩潰,直接退出,web一個try catch能夠把全部錯誤抓住,用戶能夠繼續使用其餘不受影響的功能,即便全部功能都受影響,刷新頁面搞定一切。web上界面和程序實實在在地分離了,客戶端再怎樣都是粘合在一塊兒的。
發現HTML+CSS樣式佈局自動排列至關高級,客戶端上一切都靠程序去指定大小位置以及排列的變化,可視化的XIB挺雞肋。
單線程的web很幸福,客戶端要處理多線程,雖然強大,但很麻煩。web幾乎不用考慮內存泄漏,客戶端須要。客戶端開發可使用到很底層的接口和功能。web處於較上層,在瀏覽器的包裹下,好處是不少問題瀏覽器處理web不用管,壞處是功能受限。
web和客戶端開發差很少都使用相似MVC的模式,數據經過控制器更新到各個視圖。web多用callback,iOS多用delegate,雖然iOS也能夠用block做爲callback,但仍是沒js方便,還可能致使一些內存問題。
總的來講從開發普通應用來看,就算不談跨平臺,web開發也是好處多多,但這只是開發角度上看,實際上移動設備上webApp情況始終很差,與原生客戶端差距很大,緣由:
網絡不行,流量要錢。國內網絡環境你們懂的,雖然HTML5有manifest,storage這些手段緩存webApp,但給人感受就是不靠譜,打開它仍是跟打開一個網頁同樣的感受:耗流量,還有可能在網絡很差的狀況下打不開,沒有像已經下載下來的原生APP踏實。
動畫/體驗。通常的web在頁面間切換或顯示隱藏某個組件是沒有動畫的,你們也習慣了,iPhone帶了個頭,一切都要動畫過渡,致使在移動設備上你們習慣了動畫切換,受不了沒有動畫的應用,致使動畫性能底下的webApp至今體驗上遠不如原生客戶端。
把webApp經過safari添加到主屏幕這樣的習慣很是不普及,極少人知道,不過這個應該也不算問題,若沒有上面兩個大問題,這個習慣很容易普及的。
P.S 在開發普通應用(數據處理/交互)方面,web有很大的優點,在網絡和性能問題解決後理應是首選開發方式。但在遊戲領域我看不出web有什麼優點,繼續對有點熱的HTML5遊戲開發表示不解。前端