淺談移動應用的跨平臺開發工具(Xamarin和React Native)
談移動應用的跨平臺開發不能不提HTML5,PhoneGap和Sencha等平臺一直致力於使用HTML5技術來開發跨平臺的移動應用,現在看來這個方向基本算是失敗的,基於HTML5的移動應用在使用者體驗上與原生應用仍然存在著明顯的差距。
與上述HTML5平臺不同,Xamarin和React Native通過各自的方式來實現跨平臺。Xamarin基於Mono框架將C#程式碼編譯為原生平臺程式碼,React Native則是在UI主執行緒之外執行一個JavaScript執行緒,兩者呈現給使用者的都是原生體驗。
筆者恰巧兩個平臺都各使用過一段時間,在這裡就拋磚引玉,分享一下個人觀點。對於資源有限的創業團隊,如果熟悉JavaScript,使用React Native再加上React,Redux等技術可以實現移動端、Web端、和Service端整套系統的開發,還可以重用一部分程式碼(比如Reducer和Action中的業務邏輯,以及通用的JavaScript元件程式碼),React Native也非常適合快速原型的開發。對於實力相對雄厚的大中型公司,如果已經在使用Microsoft的.Net技術,並且擁有成體系的系統架構,那麼Xamarin或許是一個更好的選擇,架構設計得好的話在程式碼重用方面並不遜於React Native。
下面從幾個方面說一說兩者各自的優缺點:
從程式語言的角度來說,C#和JavaScript都是成熟的主流程式語言,都有豐富的第三方庫和強大的社群支援。兩種語言都能夠實現從前端一直到後端的整套方案。
從開發工具的角度來說,Xamarin Studio的表現只能說剛剛及格,有種和Xamarin整個產品線不在一個水平的感覺,特別是重構和介面視覺化編輯等方面還有很大的改善空間,並且在版本升級中經常會引入新的BUG,讓筆者多少有點患上了升級恐懼症。React Native本身沒有IDE,開發人員可以選擇自己熟悉的JavaScript IDE,比如:IntelliJ等。
從第三方庫的角度來說,Xamarin的第三方庫給人一種不多不少、剛好夠用的感覺。在IDE中整合了Xamarin Component Store以後,第三方庫的數量質量都有了提升,開發人員使用起來也非常方便。如果遇到特殊情況需要自己開發或者繫結(binding)原生程式碼庫時可能會比較麻煩一些。React Native則完全依賴於JavaScript社群,NPM和GitHub,在需要自行開發和橋接(bridging)原生程式碼庫時個人覺得比Xamarin容易一些。
價格方面,Xamarin有免費版本,但在應用包尺寸上有限制。對於企業級開發最好還是選擇它的Enterprise License,雖然價格不菲,但是可以獲得技術支援和使用平臺的其他產品(如:Xamarin.Forms和Xamarin Test Cloud)。React Native則是完全免費的。
至於學習難度,很多人對JavaScript缺乏信心,覺得這門語言很難掌握和用好,而C#和Java則相對容易安全得多。這裡筆者推薦圖靈的《你不知道的JavaScript》系列,看過之後也許能夠改變這一看法。除了JavaScript語言,React Native還需要掌握Facebook的React框架,它是React Native的核心。Xamarin要求掌握C#以及iOS和Android開發的相關知識,雖然使用React Native並不一定要求會iOS和Android開發,但是對於移動應用開發者來說,無論使用什麼工具、怎樣跨平臺,瞭解各個平臺的架構設計還是非常必要的。
下面是對兩者各方面的一個總結:
不足和紕漏之處還望各位不吝賜教,歡迎交流討論。
相關文章
- 《React Native跨平臺移動應用開發》讀後鬼扯React Native
- 使用Xamarin實現跨平臺移動應用開發
- 淺談移動跨平臺開發框架的發展歷程框架
- Xamarin ios 教程 Xamarin跨平臺開發 C#蘋果應用開發iOSC#蘋果
- C#移動跨平臺開發(2)Xamarin移動跨平臺解決方案是如何工作的?C#
- 淺談 2018 移動端跨平臺開發方案
- 調查:開發人員首選的移動應用開發跨平臺工具
- Flutter嚐鮮:跨平臺移動應用開發Flutter
- 移動跨平臺方案對比:WEEX、React Native、Flutter和PWAReact NativeFlutter
- C#蘋果應用開發——第一講初始Xamarin Xamarin ios 教程 Xamarin跨平臺開發C#蘋果iOS
- 從 React Native 到 Flutter,移動跨平臺方案的真相React NativeFlutter
- 跨平臺移動應用開發迎來“大殺器”,Xamarin.Essentials正式版釋出
- 跨平臺開發之React Native初體驗React Native
- TypeScript, Angular 和移動端的跨平臺開發TypeScriptAngular
- CrossApp 0.1.5 釋出:跨平臺移動應用開發引擎ROSAPP
- 跨平臺移動應用開發引擎CrossApp更新至0.1.8ROSAPP
- FInClip開放平臺:淺談輕應用的發展
- 移動跨平臺開發深度解析
- hybird跨平臺移動app開發APP
- 移動端跨平臺開發的深度解析
- 可匯出原生移動應用的跨平臺開發引擎CrossApp正式開源!ROSAPP
- 移動開發的跨平臺技術演進移動開發
- 跨平臺打造移動原生應用的10大武器
- 大前端時代,淺談JavaScript開發重型跨平臺應用以及架構前端JavaScript架構
- 黑科技在此!移動開發者必須瞭解的跨平臺開發工具移動開發
- 用 Visual Studio Code 做基於 .NET MAUI 跨平臺移動應用開發UI
- Microsoft:使用Xamarin.Forms平臺開發移動應用指南-1187頁(附下載)ROSORM
- 5大移動應用開發平臺推薦
- MediaPipe - 跨平臺機器學習應用開發框架API機器學習框架
- 移動應用程式開發工具和平臺精選
- 10天學會跨平臺移動應用開發之AppCan視訊教程APPPCA
- Dart Editor——跨平臺的開發工具Dart
- 聊聊移動端跨平臺開發的各種技術
- 用HTML5+JS開發跨平臺的桌面應用HTMLJS
- 淺談移動端混合開發
- [譯] 使用 Flutter 實現跨平臺移動端開發Flutter
- 為什麼移動端跨平臺開發不靠譜?
- NativeScript3.0.1釋出,Native跨平臺應用