iOS客戶端開發與Web前端開發

發表於2012-05-30

來源:Bang

不知不覺做iOS客戶端開發已經半年多了,瞭解到iOS客戶端開發與Web前端開發的一些異同,寫一下。

1、版本升級。使用者角度上看,客戶端升級必須讓使用者手動下載整個新的安裝包覆蓋安裝,而web的升級無需使用者做任何事情。開發角度上看,如果客戶端有個小bug需要緊急修復,需要修復完後打包一個完成的安裝包,給一個版本號,釋出給使用者升級。而web只需要修改後臺的某些檔案,然後傳到自己的伺服器,用多快速的迭代開發方式都沒問題。web沒有版本相容性問題,客戶端這個問題就大了。

2、iOS客戶端用編譯語言,web用指令碼語言。編譯語言好處:很多錯誤編譯期就知道,不用擔心類似寫錯一個字母導致的問題。iOS客戶端開發只能用XCode,無法選用自己喜歡的編輯器。使用指令碼語言的web無論前端後端對編輯器的選擇都很自由。

3、客戶端一碰到異常就崩潰,直接退出,web一個try catch可以把所有錯誤抓住,使用者可以繼續使用其他不受影響的功能,即使所有功能都受影響,重新整理頁面搞定一切。web上介面和程式實實在在地分離了,客戶端再怎樣都是粘合在一起的。

4、發現HTML+CSS樣式佈局自動排列相當高階,客戶端上一切都靠程式去指定大小位置以及排列的變化,視覺化的XIB挺雞肋。

5、單執行緒的web很幸福,客戶端要處理多執行緒,雖然強大,但很麻煩。web幾乎不用考慮記憶體洩漏,客戶端需要。客戶端開發可以使用到很底層的介面和功能。web處於較上層,在瀏覽器的包裹下,好處是很多問題瀏覽器處理web不用管,壞處是功能受限。

6、web和客戶端開發差不多都使用類似MVC的模式,資料通過控制器更新到各個檢視。web多用callback,iOS多用delegate,雖然iOS也可以用block作為callback,但還是沒js方便,還可能導致一些記憶體問題。

 

總的來說從開發普通應用來看,就算不談跨平臺,web開發也是好處多多,但這只是開發角度上看,實際上移動裝置上webApp狀況始終不好,與原生客戶端差距很大,原因:

1、網路不行,流量要錢。國內網路環境大家懂的,雖然HTML5有manifest,storage這些手段快取webApp,但給人感覺就是不靠譜,開啟它還是跟開啟一個網頁一樣的感覺:耗流量,還有可能在網路不好的情況下打不開,沒有像已經下載下來的原生APP踏實。

2、動畫/體驗。一般的web在頁面間切換或顯示隱藏某個元件是沒有動畫的,大家也習慣了,iPhone帶了個頭,一切都要動畫過渡,導致在移動裝置上大家習慣了動畫切換,受不了沒有動畫的應用,導致動畫效能底下的webApp至今體驗上遠不如原生客戶端。

3、把webApp通過safari新增到主螢幕這樣的習慣非常不普及,極少人知道,不過這個應該也不算問題,若沒有上面兩個大問題,這個習慣很容易普及的。

 

PS:在開發普通應用(資料處理/互動)方面,web有很大的優勢,在網路和效能問題解決後理應是首選開發方式。但在遊戲領域我看不出web有什麼優勢,繼續對有點熱的HTML5遊戲開發表示不解。

 

相關文章