谈移动应用跨平台开发不提HTML5。PhoneGap、Sencha等平台一直致力于使用HTML5技术开发跨平台移动应用。现在看来,这个方向基本上是失败的。基于HTML5的移动应用与原生应用在用户体验方面仍然存在明显差距。与前面提到的HTML5平台不同,Xamarin和ReactNative以各自的方式实现了跨平台。Xamarin将C#代码编译成基于Mono框架的原生平台代码,而ReactNative在主UI线程之外运行一个JavaScript线程,两者都为用户提供了原生的体验。笔者刚好在这两个平台都用过一段时间,所以在此分享一下个人的看法。对于资源有限的创业团队,如果熟悉JavaScript,使用ReactNative加上React、Redux等技术,可以实现移动端、Web端、服务端完整系统的开发,还可以复用部分代码(如如在Reducer和Action)业务逻辑,以及常见的JavaScript组件代码),ReactNative也非常适合快速原型制作。对于实力比较强的大中型公司,如果已经在使用微软的.Net技术,并且有系统的系统架构,那么Xamarin可能是更好的选择,好的架构设计在代码复用方面并不逊色代码重用。反应本机。下面从几个方面谈谈它们各自的优缺点:从编程语言的角度来看,C#和JavaScript都是成熟的主流编程语言,拥有丰富的第三方库和强大的社区支持。两种语言都能够实现从前端一路到后端的完整解决方案。从开发工具的角度来看,XamarinStudio的性能只能说是及格。感觉和整个Xamarin产品线不在一个层次上。特别是重构、界面可视化编辑等一些常用功能得到了极大的提升。空间大,版本升级时经常引入新的bug,让笔者多少有些升级恐惧症。ReactNative本身没有IDE,开发者可以选择自己熟悉的JavaScriptIDE,比如IntelliJ等。从第三方库来看,Xamarin的第三方库给人的感觉是没有更多,不少,刚好够用。在IDE中集成XamarinComponentStore后,第三方库的数量和质量都得到了提升,开发者使用起来非常方便。如果在特殊情况下需要自己开发或者绑定原生代码库,可能会比较麻烦。ReactNative完全依赖于JavaScript社区、NPM和GitHub。个人认为在需要自己开发和桥接原生代码库的时候比Xamarin更简单。在价格方面,Xamarin有免费版,但对应用程序包的大小有限制。对于企业级开发,最好选择它的EnterpriseLicense。虽然价格高,但可以获得技术支持,可以使用平台的其他产品(如:Xamarin.Forms和XamarinTestCloud)。ReactNative是完全免费的。至于学习难度,很多人对JavaScript缺乏信心,觉得这门语言很难掌握和用好,而C#和Java相对安全,容易得多。在这里笔者推荐图灵的《你不知道的JavaScript》系列,看完或许能改变这种看法。以下是两者各个方面的总结:
