您当前的位置:首页 > 电脑百科 > 程序开发 > 移动端 > IOS

iOS开发是否要采用 React Native?

时间:2019-08-12 15:50:09  来源:  作者:

前言


React Native 是 Facebook 2015年开源的 JAVAscript 框架,旨在使用 JavaScript 高效开发手机App。配合着多个显而易见的优势和 Facebook 强大的宣传机器,它立刻成为国内外大小公司的明星开发框架。开源社区的参与激情、各方博客的宣传追捧,从其 Github 上 56000+ 星和 13000+ Fork 就可见一斑。

对于 React Native,IOS 开发者社区也是褒贬不一。有人认为 React Native 更快更好,苹果原生那套要完,不赶快学习就晚了;也有人认为 React Native 不过是 Facebook 的又一个玩具,以它现在的稚嫩还难以对原生的 Swift/Objective-C 造成足够威胁。

笔者希望就这几年亲身开发 React Native 和原生 iOS 的经验,以及在硅谷的所见所闻,对这个问题提出一点自己的看法。对于一门新技术,我个人认为,评判其是否值得采用有以下两个标准:

  • 该技术本身是否具备足够的优点
  • 该技术是否符合目前的开发需求

下面就将从技术和开发需求两个角度出发,谈一谈 React Native。

React Native 的技术特点


React Native 的优点很明显。官网的醒目位置有简单介绍,开发者们也在各种场合做了相关说明,总结如下:

  • 跨平台开发。同一段 Javascript 代码可以被用于 iOS 和 Android 两个平台。相比于以前 iOS 和 Android App 各维护一套逻辑大同小异的代码,React Native 的开发、测试和维护成本要低很多。
  • 快速编译。比起 Xcode 中漫长的编译,React Native 采用了热加载(Hot Reload)的即时编译机制,使得 App UI 的开发体验大幅改善,几乎到了和网页开发一样随改随变的效果。
  • 快速发布。通过 JSBundle,React Native 可以即时更新 App。相比原来冗长的审核和上传过程,发布和测试新功能的效率大幅提高。
  • 渲染和布局更加高效。React Native 可以直接套用网页开发的 css 和 flex 机制,摆脱了 autolayout 和 frame 布局中繁琐的数学计算,更加直接简便。
  • 简单易学。相比于 iOS 和 Android 的一整套复杂的知识体系,React Native 从本质上来讲就是状态机,对于开发者来讲理解不难,且实际操作可谓入门容易、上手轻松。如果是前端开发者,那么对于 Javascript 本来就有相应了解,用 React Native 开发手机应用更是水到渠成。
iOS 开发是否要采用 React Native?

 

当然,看上去很完美的 React Native 在技术上也有诸多风险,比如:

  • 第三方依赖。React Native 严重依赖于 Facebook 的维护。苹果在 iOS 上每次技术的更新、政策的改变都会让原来使用了 React Native 代码库受到影响,等待 Facebook 和社区的修复会妨碍 App 的更新和用户体验。前段时间,百度和开发者们弃用React Native 而迫使的 Facebook 修改开发者权限(License)事件,证明了开发依赖于第三方的风险确实存在。
  • 逻辑上的额外开销。直到今天, React Native 依然只是0.49版本,仅仅支持简单的 UI 制作,其不成熟的 API 连复杂的动画都难以实现,更别提 iOS 的底层优化和兼容操作。同时因为操作系统和设备的不同,React Native 得分别进行针对性处理,这对代码库的维护又是一个挑战。
  • 联调的困难。对于原生的 iOS 和 Android App 引入 React Native,会增加整个代码库的复杂度,在深入底层原生代码进行 debug 时也是困难重重,可以说是在开发和维护上的成本都有所增加。

另外,有很多人觉得 React Native 的性能不如原生的 Objective-C/Swift 好。笔者自己尝试过,觉得差别不大。与硅谷很多开发者的交流中得知,React Native 的性能与原生相比只有毫秒只差,根本不会对用户体验造成影响。对此感兴趣的朋友可以阅读此文Comparing the Performance between Native iOS (Swift) and React-Native,文中在 CPU、GPU、内存3个维度上进行了多个 API 的比较,React Native 与原生的 Swift 相比真是不遑多让。

iOS 开发是否要采用 React Native?

 

App 所面对的开发需求


作为 iOS 开发者,脱离了应用谈技术,好比镜中花、水中月——空谈而已。实际 App 开发中,有以下几种情况。我们来一一分析适不适合引入 React Native。

第一种情况,从零开始开发一款简单的 App。它很有可能是独立开发者的小试牛刀,或是初创公司的第一代产品。我个人认为这种情况下是非常适合用 React Native 的。此时,App 的UI 和业务逻辑都比较简单,React Native 可以满足绝大多数情况。而且,开发者时间有限,没时间系统学习两大平台的知识体系;初创公司的成本有限,需要在 iOS 和 Android 两个平台上发布产品,以便用最短时间、最小成本迅速积累第一波用户,拿到投资。React Native 的技术特点非常符合这些要求。

符合这种的产品就如 Facebook 的 F8 App,这是一款专为其年度开发者大会打造的 App。因为它只有日历、地图、推送等简单功能,React Native 再适合不过——1个工程师花了2周就完成了全部的开发,现已开源在 Github 上。

第二种情况,从零开始开发一款比较复杂的 App。这有可能是一个公司新的产品线,也有可能是一个成熟 App 的重构。在这种情况下,质量、口碑、以及日后的维护就是首要考虑因素,原生的 Swift/Objective-C 在面对实际问题时解决方案更加成熟多样,React Native 发挥不了其技术优势,故而原生开发是更为稳妥的选择。

举个例子,Uber 在去年推出了他们新的 App。内部也尝试了 React Native,但因为无法满足 App 对于复杂动画的需求、与底层系统的兼容不够、性能上的优化不足等多个原因,最终决定放弃使用。

iOS 开发是否要采用 React Native?

 

第三种情况,在原有的 App 中引入新的功能。这种情况比较复杂,它又分为以下几种情况:

  1. 原来的 App 代码库是 100% 的 Objective-C/Swift。这种情况下我个人不推荐引入 React Native。因为技术团队已经稳定在 iOS 和 Android 两个技术栈上了,引入第三个技术栈,技术上增加复杂度和维护成本,人员上要组建一个新的 React Native 团队,开支和组织架构上都有负面影响。除非有足够的预算,或是后期有大幅采用 React Native 的计划,否则不推荐引入 React Native。
  2. 验证新功能该不该引入。验证过程中公司有时间成本,高层希望的是短期内就能做出决策。React Native 正是这种情况的银色子弹。据我所知 Tesla 的 App 就采用了这种机制。
  3. 新功能确定引入,不是核心功能,并不复杂。这种情况下当然可以尝试 React Native。如果是网页端类型的 App 或是功能,比如淘宝、携程、京东之类,他们本身就有大量的网页端开发经验,不如直接让负责的前端工程师来处理相关的移动端业务。即使不成功也不会影响主要业务,同时可以为公司的技术积累提供宝贵经验。Facebook 和 Instagram 的主 App 目前在部分小功能上就用了类似的循序渐进得采用 React Native 的策略。
  4. 新功能确定引入,是重要功能,有严格的发布要求和日期。这个同上文说的第二种情况相同,保险和稳妥起见不推荐采用 React Native。
iOS 开发是否要采用 React Native?

 

总结


单纯从技术角度来讲,React Native 绝对是移动端不可多得的优秀框架。它状态机的思路可以被借鉴用来写原生的 View Controller,其 UI 布局上的机制也对我们平日在性能上的优化提供了灵感。

目前硅谷对于 React Native 也普遍持保守态度,采用 React Native 的科技巨头也只有 Facebook,Amazon,Uber,Airbnb 四家,而且都是局部小功能、小App采用。好消息是,Facebook 对于 React Native 的投入不遗余力,圈内开发者也是对此颇为积极。更多细节可以阅读官方的开发日程表:React Native Scheduling

笔者认为,只有在快速开发、节约成本的考虑之下,React Native 才能发挥出巨大的优势。对于 iOS 开发者,React Native 只可作为适当补充,我们还是应该多多钻研 Swift / Objective-C 以及 App 开发的思路,它们才是进阶成长的关键所在。



Tags:iOS开发   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
苹果企业开发者账号和个人人开发者账号及其企业开发者账号来开展比照得话,就是说能否App Store发布,以及价钱。I苹果企业开发者账号的价钱更贵,每一年必须299美金,不可以发布App...【详细内容】
2020-04-15  Tags: iOS开发  点击:(90)  评论:(0)  加入收藏
开发者们在想要保证软件能否正常使用,同时发现软件的不足的情况,进行内测是必经的一道手续,但是苹果系统运行需要通过AppStore来进行下载安装,而为了可以顺利运行,企业签名就可以...【详细内容】
2020-04-14  Tags: iOS开发  点击:(78)  评论:(0)  加入收藏
我们都知道,ios开发者们必不可少的工具就是ios开发者账号,只有苹果开发者账号才能上架App Store,苹果开发者账号不仅要收费,还要经过一定时间的申请,才能审核通过生成账号。下面...【详细内容】
2020-01-20  Tags: iOS开发  点击:(68)  评论:(0)  加入收藏
前言React Native 是 Facebook 2015年开源的 Javascript 框架,旨在使用 Javascript 高效开发手机端 App。配合着多个显而易见的优势和 Facebook 强大的宣传机器,它立刻成为国...【详细内容】
2019-08-12  Tags: iOS开发  点击:(224)  评论:(0)  加入收藏
▌简易百科推荐
前言最近对 WebRTC iOS 端源码进行了下载和编译,网上针对 WebRTC iOS 端的编译文章基本都是几年前的,有些地方已经不适用于最新版的 WebRTC 的编译,简单记录下载&编译的过程,以...【详细内容】
2021-11-10  anyRTC云平台    Tags:WebRTC iOS   点击:(38)  评论:(0)  加入收藏
IT之家 10 月 20 日消息,据 9to5 Mac 报道,继 iOS 15.1 RC、macOS Monterey RC 和其他更新发布后,苹果也向开发者提供了 Xcode 13.1 RC(候选版)。最新版本的 Xcode 现在可以在苹...【详细内容】
2021-10-20    IT之家  Tags:Xcode   点击:(88)  评论:(0)  加入收藏
IT之家 8 月 12 日消 苹果今日发布了一款新的开发者工具,旨在强制那些运行 iOS 15 和 iPadOS 15 的设备在使用不安全的 WiFi 网络或 WiFi 速度较慢时优先使用 5G 连接而不是...【详细内容】
2021-08-12    IT之家  Tags: iOS   点击:(151)  评论:(0)  加入收藏
IT之家4月7日消息 去年底,苹果公司要求应用商店所有第三方软件都必须增加 “隐私标签”以进一步保护消费者隐私安全。之后,谷歌旗下大量 iOS 软件长时间停止更新。而到了今年...【详细内容】
2021-04-07    IT之家  Tags:苹果隐私标签   点击:(309)  评论:(0)  加入收藏
你们好,这里是Seek思科,为你寻找苹果最新资讯、苹果隐藏技巧、苹果良心APP以及苹果优质配件。如果你需要这些,不妨点个关注。苹果已经官宣今年全球开发者大会将在北京时间6月8...【详细内容】
2021-04-02  Seek思科  今日头条  Tags:iOS15系统   点击:(370)  评论:(0)  加入收藏
Sideloadly安装unc0ver越狱 今天推荐比Altstore更简单的安装工具,Sideloadly 在QQ群文件下载最新版本安装, 然后直接打开,演示是Mac版本 Win是一模一样的, 不会出现报错2或...【详细内容】
2021-03-30  CydiaInstaller  今日头条  Tags:iOS自签名   点击:(1280)  评论:(0)  加入收藏
就在昨日,苹果对《App Store 审核指南》进行了2021年的首次重大更新。而此次更新主要是为了方便开发者为即将发布的OS版本中的新功能提供支持,更好地保护用户,并帮助开发者的Ap...【详细内容】
2021-02-03      Tags:App Store   点击:(205)  评论:(0)  加入收藏
不用不上架、不越狱、不要企业证书、永不掉签 只需一个h5网站地址 就能创建属于您自己的苹果IOS APP_多啦咪资源网无需越狱 无需企业证书 不用上架appStore 界面全屏 无广告...【详细内容】
2020-12-11      Tags:APP   点击:(177)  评论:(0)  加入收藏
iOS14支持把小组件添加到桌面,不过我们之前推荐的都是一些工具类的或者是桌面美化类的小组件,今天我们来看看目前有哪些我们常用的App已经支持把小组件添加到桌面了。 网易云...【详细内容】
2020-11-26      Tags:iOS   点击:(185)  评论:(0)  加入收藏
简介: 在平时的面试中,经常问到的高频面试题大概做了一个总结,希望能帮到你!一、如何绘制UIView?绘制一个UIView最灵活的方法就是由它自己完成绘制。实际上你不是绘制一个UIView...【详细内容】
2020-11-13      Tags:iOS   点击:(146)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条