淺談移動應用的跨平臺開發工具(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
- 淺談 2018 移動端跨平臺開發方案
- 淺談移動跨平臺開發框架的發展歷程框架
- 移動跨平臺方案對比:WEEX、React Native、Flutter和PWAReact NativeFlutter
- 從 React Native 到 Flutter,移動跨平臺方案的真相React NativeFlutter
- Flutter嚐鮮:跨平臺移動應用開發Flutter
- 跨平臺移動應用開發迎來“大殺器”,Xamarin.Essentials正式版釋出
- CrossApp 0.1.5 釋出:跨平臺移動應用開發引擎ROSAPP
- 跨平臺移動應用開發引擎CrossApp更新至0.1.8ROSAPP
- FInClip開放平臺:淺談輕應用的發展
- 移動跨平臺開發深度解析
- 用 Visual Studio Code 做基於 .NET MAUI 跨平臺移動應用開發UI
- 移動端跨平臺開發的深度解析
- 黑科技在此!移動開發者必須瞭解的跨平臺開發工具移動開發
- 移動開發的跨平臺技術演進移動開發
- 5大移動應用開發平臺推薦
- 大前端時代,淺談JavaScript開發重型跨平臺應用以及架構前端JavaScript架構
- [譯] Airbnb 在 React Native 上下的賭注(三):建立一個跨平臺的移動端團隊AIReact Native
- 原生移動應用框架React Native與Flutter比較框架React NativeFlutter
- 大型直播平臺應用架構淺談應用架構
- 使用React Native和Expo快速構建原生移動iOS和Android應用程式React NativeiOSAndroid
- Electron框架使用vue開發跨平臺桌面工具應用-專案搭建框架Vue
- [譯] 使用 Flutter 實現跨平臺移動端開發Flutter
- 淺談直播教育平臺開發成本
- 淺談桌面應用程式的開發
- 淺談跨平臺框架Flutter的搭建與執行框架Flutter
- 移動應用程式發展趨勢:跨平臺開發、隱私保護、使用者體驗等
- Flutter 基礎(一)移動開發的跨平臺技術演進Flutter移動開發
- 使用Xamarin開發移動應用示例——數獨遊戲(三)新增回退和計時功能遊戲
- MediaPipe - 跨平臺機器學習應用開發框架API機器學習框架
- [譯] 測試原生,Flutter 和 React Native 移動開發之間的效能差異FlutterReact Native移動開發
- 推薦幾款實用的移動開發平臺移動開發
- 優雅地使用TypeScript開發React Native應用TypeScriptReact Native
- react native 和原生平臺 android的互動React NativeAndroid
- 淺談 Xamarin Community Toolkit 的未來發展Unity
- 淺談跨平臺框架 Flutter 的優勢與結構框架Flutter
- 用JS開發跨平臺桌面應用,從原理到實踐JS
- Dore 混合應用框架 —— 基於 React Native 的混合應用遷移方案框架React Native
- 跨平臺專案GSYGithubApp系列三大開源版本推薦(Flutter 、React Native 、Weex)GithubAPPFlutterReact Native