转载

浅谈移动应用的跨平台开发工具(Xamarin和React Native)

  谈移动应用的跨平台开发不能不提 HTML5,PhoneGap 和 Sencha 等平台一直致力于使用 HTML5 技术来开发跨平台的移动应用,现在看来这个方向基本算是失败的,基于 HTML5 的移动应用在用户体验上与原生应用仍然存在着明显的差距。

  与上述 HTML5 平台不同,Xamarin 和 React Native 通过各自的方式来实现跨平台。Xamarin 基于 Mono 框架将 C# 代码编译为原生平台代码,React Native 则是在 UI 主线程之外运行一个 JavaScript 线程,两者呈现给用户的都是原生体验。

浅谈移动应用的跨平台开发工具(Xamarin和React Native)

  笔者恰巧两个平台都各使用过一段时间,在这里就抛砖引玉,分享一下个人观点。对于资源有限的创业团队,如果熟悉 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 开发,但是对于移动应用开发者来说,无论使用什么工具、怎样跨平台,了解各个平台的架构设计还是非常必要的。

  下面是对两者各方面的一个总结:

浅谈移动应用的跨平台开发工具(Xamarin和React Native)

  不足和纰漏之处还望各位不吝赐教,欢迎交流讨论。

正文到此结束
Loading...