1. 程式人生 > >對當前主流hybrid app、web app與native app工具的初步比較與分析

對當前主流hybrid app、web app與native app工具的初步比較與分析

本文獻給web開發需要轉型app開發的朋友,原生開發的朋友可自行忽略。

隨著移動網際網路元年—2011年,已過去4年了。一大批網際網路的站長正面臨的流量減少的困境,不少技術能力稍強的站長轉型iOS、Android開發者。跟得上市場的站長繼續成長,跟不上的小部分站長正在面臨被淘汰的處境。

筆者大學時期也是曾經的站長群體的一員,擅長單打獨鬥,技術、設計、營銷樣樣都來,但2012年免不了走上了找工作的道路,索性後來有幸進入百度公司學習。

在這個“大眾創業、萬眾創新”的年代,創業彷彿又好像點燃了你心中埋藏已久的熱情。這時作為網際網路時代的人,必須轉型開發者。然而問題來了,只會網站的前後端能力如何去迎合移動網際網路的技術需求,所以才有了一段不斷踩坑、不斷填坑的歷程。

在尋找工具、體驗工具、使用工具的這段時間,積累了一點個人經驗,在這裡淺談下對這些工具的使用體驗。

1.使用過哪些工具?

Webapp:ThinkPHP Mobile(TPM)、Ionic Framework、JingleUI

Hybridapp:Apicloud、Phonegap(稍瞭解Hbuilder、Appcan、Wex5)

Nativeapp:CrossApp、React-Native、Xcode、Eclipse-ADT/Android Studio

2. 以上工具各自的程式語言是?

Webapp:主要使用H5(html5、css3、js)語言規範來編寫,對JS語言掌握要求較高

Hybridapp:同Webapp使用H5作為主要程式語言,JS將作為主力連線原生SDK模組

Nativeapp:

1)Xcode、Eclipse-ADT/Android Studio:使用Objective-c/swift、Java

2)CrossApp:主要使用C++來進行跨平臺編寫,JS(已經支援,不過仍處於測試階段)

3)React-Native:主要使用JS編寫,語法規則JSX

3.以上工具的上手難度、開發週期、打包平臺、跨平臺屬性是?

1)上手難度:

Hybridapp/Webapp:寫一次,執行任何平臺。簡單

React-Native:學一次,寫任何平臺。中等

Nativeapp:學一次,只限執行特定平臺。較難

2)開發週期:

Webapp:2~3周

Hybridapp:由於第三方工具相容性、bug處理問題、呼叫js-原生模組(熟悉文件),開發週期在2個月左右

React-Native:1個半月~2個月

Nativeapp:各1個半月~2個月

3)打包平臺

Webapp:無,可藉助微信開放/公眾平臺分發。成本低;自由度高

Hybridapp:第三方工具的線上打包。成本低;自由度低

React-Native:原生Xcode、Eclipse-ADT。Xcode需購買支援OSX作業系統的主機,成本略高;自由度高

Nativeapp:原生Xcode、Eclipse-ADT/Android Studio。Xcode需購買支援OSX作業系統的主機,成本略高;自由度高

4)跨平臺

Webapp:H5分發平臺

Hybridapp:跨iOS、Android、Wp(PhoneGap支援)多平臺

React-Native:跨iOS、Android雙平臺

Nativeapp:不跨平臺

4.Hybridapp與Native app相比,價效比如何?

時代在發展,Html5規範也在完善,尤其是W3C敲定Html5標準之後,但是現實真的有那麼美好嗎?

筆者使用Apicloud,從釋出到今天已有一年多,apicloud相對其他混合式app工具,是同類較好的,但這並不能掩飾h5作為app 開發的侷限性。

1)混合式app的使用者體驗

頁面與頁面之間的切換,也稱轉場動畫。隨著手機硬體系統的更新換代,webview已有很大程度的提升,但即使是在iphone 6/6s plus上仍然是假性生硬切換,即使無卡頓。那麼要做到諸如微信般切換已然無可能。

iOS系統如此,安卓系統情況亦不明朗。而由於混合式app依賴模組實現原生互動,在沒有大量模組實現的情況下,需要使用html5-js來代替,體驗更是大打折扣。

2)UI開發受限

許多創業公司由於產品互動需求,需要將app ui做到配色一致或更個性化(如帶卡通下拉重新整理),而混合式app的模組UI已寫固定,自由化UI定製難。

3)整合第三方sdk

混合式app想要使用第三方sdk,首先要使用的工具平臺支援,如果平臺不支援,要麼你請人寫iOS/android模組,要麼就是等。倘若新整合的sdk出現bug,你所能做的也是等,並沒有其他好的辦法。

5.針對這些工具,學習路線是?

我在一些混合app 開發群裡,看到過很多web開發新轉行的同學,問題沒有看明白,就直接提問,我覺得這種做法會影響自身的開發效率。以下講講學習混合式app的學習路線:

1)搭建IDE環境

針對Win/OS X選取不同的開發環境工具包,並生成第一個示例app,hello world!

2)看教程

Html5教程推薦:www.w3school.com.cn

在第三方工具的開發者社群看置頂教程帖子或視訊教程,文字的教程可以多看,視訊的教程看看就好,畢竟每個人的思路都是不同的

3)看技術文件

到這個階段,你要正式開發app了。文件裡的方法不用記得太詳細,建議邊寫邊看邊除錯。混合式app的除錯需要同步到手機,這點可能有點麻煩。推薦使用海馬玩模擬器進行線上除錯。

4)看開原始碼

任何程式語言都有互通性,而看開原始碼就是必修課了。好的開原始碼能讓你進步神速。

6.對web開發者轉型的建議

同為多年web開發,轉型不易,一要考慮工具要像指令碼語言如此便捷效率;二要考慮能否媲美原生app。

我的建議是:

以hybrid app為基礎,觀望crossapp-js部分,條件允許使用react-native(來自facebook,一直在更新)。

hybrid app、web app、native app之間的比較分析就到這裡,如果還有補充,會繼續更新。

擴充套件閱讀