浅谈移动应用的跨平台开发工具(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开发,但是对于移动应用开发者来说,无论使用什么工具、怎样跨平台,了解各个平台的架构设计还是非常必要的。

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

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

时间: 2024-08-01 06:26:56

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

浅谈:小程序的开发模式

浅谈:小程序的开发模式 小程序开发,主要可分为三种模式: 1.基于现成模板进行编辑的模式这种模式下,模板是最为首要的,用户首先选择一个最为接近需求的模板,然后采用编辑.配置的方式对模板的名字.标题.栏目名称/数量.图片等进行修改.优点:简单快捷,如果图片素材等提前准备到位了,通过模板编辑配置的模式开发微信小程序,一般1.2个小时就能搞定!缺点:1)找到匹配度足够满意的模板并不容易:这种模式比较依赖于模板供应方的模板库丰富程度,一般来说,最终用户的需求都是千变万化的,往往都是各有各的诉求,即便模板

C#跨平台手机应用开发工具Xamarin尝试 与Eclipse简单对比

Xamarin 支持使用C#开发基于Android.IOS.WindowsPhone应用开发,最大特点C#+跨平台,详细说明问度娘. 安装 研究 想体验研究的点击查看页面 Xamarin For Visual Studio 3.0.54.0 完整离线破解版 我也下载了研究下,破解有时候有问题,一登陆就变成试用版,需要重新生成License,挺烦人,于是写了段批处理,放入记事本中另存为crack.bat执行,则可再次生成License. @Entitlements.bak为破解后生成的Entitl

Jetbrains Rider 2019 for Mac(跨平台开发工具)

Jetbrains Rider 2019 中文汉化版是一个强大的跨平台.Net开发IDE,可以与.NET Framework和.NET Core一起使用,也可以与Mono项目一起使用.因此,您可以使用rider 2019来创建类和库,Web应用程序,独立实用程序等.JetBrains Rider for mac是一个跨平台.NET IDE集成开发环境,且允许您打开,编辑,构建,运行和调试大多数.NET应用程序:桌面,Web,库,服务(除了UWP应用程序的显着例外).此次更新的JetBrains

浅谈 PHP 与手机 APP 开发(API 接口开发)

本文内容转载自:http://www.thinkphp.cn/topic/5023.html 这个帖子写给不太了解PHP与API开发的人 一.先简单回答两个问题: 1.PHP 可以开发客户端?答:不可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:服务端的开发.(别去纠结 GTK.WinBinder) 2.为什么选择 PHP 作为开发服务端的首选?答:跨平台(可以运行在UNIX.LINUX.WINDOWS.Mac OS下).低消耗(PHP消耗相当少的系统资源).运

浅谈百度地图的简单开发之结合方向传感器实现定位功能(三)

  今天我们来谈下百度地图的定位功能.在此之前我已经将百度地图的基本地图大概说了下,事实上百度地图的基本功能还有非常多的内容. 感兴趣的能够到百度地图的开发人员的官网看看.今天就開始来讲下百度地图中的定位功能. 今天所讲的百度地图所涉及的内容主要有:基本定位的实现.自己定义定位图标.结合方向传感器定位,选择定位中的几种模式(罗盘模式,普通模式,尾随模式). 一.基本定位的实现: 所谓定位无非就是获取到一个地方所处地球的经纬度坐标.这个反映到地图中就是一个点.可是怎么去实现一个定位呢?? 首先,须

浅谈前端移动端页面开发(布局篇)

前言的一些碎碎念:最近一直在写移动端的页面,不过一直是用的别人造好的轮子,很多时候并没有想那是为什么,那是怎么样要那么写,就跟着别人的文档去了.本以为自己对移动端的那一丢丢理解,结果很多东西都特么有问题,所以,今天停下了手中的一些东西,来谈下移动端的布局方案吧 内容有些长,这也是我第一次写博客,不足之处还请严厉指出 一. viewport 什么是viewport 简单来讲,viewport就是浏览器上,用来显示网页的那一部分区域了,也就是说,浏览器的实际宽度,是和我们手机的宽度不一样的,无论你的

浅谈PHP与手机APP开发(API接口开发)

1 了解PHP与API开发 2 一.先简单回答两个问题: 3 4 1.PHP 可以开发客户端? 5 答:不可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:服务端的开发.(别去纠结 GTK.WinBinder) 6 7 2.为什么选择 PHP 作为开发服务端的首选? 8 答:跨平台(可以运行在UNIX.LINUX.WINDOWS.Mac OS下).低消耗(PHP消耗相当少的系统资源).运行效率高(相对而言).MySQL的完美搭档,本身是免费开源的,...... 9

转 浅谈 PHP 与手机 APP 开发(API 接口开发)

这个帖子写给不太了解PHP与API开发的人 一.先简单回答两个问题: 1.PHP 可以开发客户端?答:不可以,因为PHP是脚本语言,是负责完成 B/S架构 或 C/S架构 的S部分,即:服务端的开发.(别去纠结 GTK.WinBinder) 2.为什么选择 PHP 作为开发服务端的首选?答:跨平台(可以运行在UNIX.LINUX.WINDOWS.Mac OS下).低消耗(PHP消耗相当少的系统资源).运行效率高(相对而言).MySQL的完美搭档,本身是免费开源的,...... 二.如何使用 PH

浅谈思想、技术与开发

思想再锋利, 终究得靠技术来做事:因此,思想的量必须适宜,否则反而会扰乱人的认识和行动: 思想的力量在于參悟技术的内在和本质,以便更好地使用和创造技术.归根结底是为了解决问题. 技术是问题的一致性解决方案的机制.技术通常通过编程语言.开发框架.组件.库.包等方式来提供实现: 不应局限于单需求指定功能的解决,而是力求为一类需求的问题寻求一致的解决方案和实现模式. 开发的本质是解决问题. 将问题表达为可计算的对象, 使用编程语言.开发框架.组件.库.包等各种抽象的编程设施来实现它. 也就是说, 开发