淺談移動應(yīng)用的跨平臺開發(fā)工具(Xamarin和React Native)
談移動應(yīng)用的跨平臺開發(fā)不能不提HTML5,PhoneGap和Sencha等平臺一直致力于使用HTML5技術(shù)來開發(fā)跨平臺的移動應(yīng)用,現(xiàn)在看來這個方向基本算是失敗的,基于HTML5的移動應(yīng)用在用戶體驗上與原生應(yīng)用仍然存在著明顯的差距。
與上述HTML5平臺不同,Xamarin和React Native通過各自的方式來實現(xiàn)跨平臺。Xamarin基于Mono框架將C#代碼編譯為原生平臺代碼,React Native則是在UI主線程之外運行一個JavaScript線程,兩者呈現(xiàn)給用戶的都是原生體驗。
筆者恰巧兩個平臺都各使用過一段時間,在這里就拋磚引玉、分享一下個人觀點。對于資源有限的創(chuàng)業(yè)團隊,如果熟悉JavaScript,使用React Native再加上React,Redux等技術(shù)可以實現(xiàn)移動端、Web端、和Service端整套系統(tǒng)的開發(fā),還可以重用一部分代碼(比如Reducer和Action中的業(yè)務(wù)邏輯,以及通用的JavaScript組件代碼),React Native也非常適合快速原型的開發(fā)。對于實力相對雄厚的大中型公司,如果已經(jīng)在使用Microsoft的.Net技術(shù),并且擁有成體系的系統(tǒng)架構(gòu),那么Xamarin或許是一個更好的選擇,加上好的架構(gòu)設(shè)計在代碼重用方面并不遜于React Native。
下面從幾個方面說一說兩者各自的優(yōu)缺點:
從編程語言的角度來說,C#和JavaScript都是成熟的主流編程語言,都有豐富的第三方庫和強大的社區(qū)支持。兩種語言都能夠?qū)崿F(xiàn)從前端一直到后端的整套方案。
從開發(fā)工具的角度來說,Xamarin Studio的表現(xiàn)只能說剛剛及格,有種和Xamarin整個產(chǎn)品線不在一個水平線的感覺,特別是一些常用功能如重構(gòu)和界面可視化編輯等還有很大的改善空間,并且在版本升級中經(jīng)常會引入新的BUG,讓筆者多少有點患上了升級恐懼癥。React Native本身沒有IDE,開發(fā)人員可以選擇自己熟悉的JavaScript IDE,比如:IntelliJ等。
從第三方庫的角度來說,Xamarin的第三方庫給人一種不多不少、剛好夠用的感覺。在IDE中集成了Xamarin Component Store以后,第三方庫的數(shù)量質(zhì)量都有了提升,開發(fā)人員使用起來也非常方便。如果遇到特殊情況需要自己開發(fā)或者綁定(binding)原生代碼庫時可能會比較麻煩一些。React Native則完全依賴于JavaScript社區(qū),NPM和GitHub,在需要自行開發(fā)和橋接(bridging)原生代碼庫時個人覺得比Xamarin容易一些。
價格方面,Xamarin有免費版本,但在應(yīng)用包尺寸上有限制。對于企業(yè)級開發(fā)***還是選擇它的Enterprise License,雖然價格不菲,但是可以獲得技術(shù)支持和使用平臺的其他產(chǎn)品(如:Xamarin.Forms和Xamarin Test Cloud)。React Native則是完全免費的。
至于學(xué)習(xí)難度,很多人對JavaScript缺乏信心,覺得這門語言很難掌握和用好,而C#和Java則相對安全容易很多。這里筆者推薦圖靈的 《你不知道的JavaScript》系列 ,看過之后也許能夠改變這一看法。
下面是對兩者各方面的一個總結(jié):
