使用React Native一年后的感觉

转载自;http://www.dobest.me/blog/2016/06/12/%E4%BD%BF%E7%94%A8React%20Native%E4%B8%80%E5%B9%B4%E5%90%8E%E7%9A%84%E6%84%9F%E5%8F%97/css

 

当我在面试Discord的时候,技术主管Stanislav跟我说:前端

React Native表明着将来。等它一发布,咱们就会用它从零构建iOS应用。react

做为一名原生iOS开发者,基于先前使用PhoneGap的经验,我很是怀疑使用Web技术构建移动应用的这种方式。可是当我学习并使用React Native一段时间以后,我很是庆幸咱们作了这个决定。git

开发效率

虽然iOS“团队”只有我本身一我的,可是iOS应用开发依然能够遇上Web和桌面应用开发闪电般的速度。Apple公司已经容许开发者使用JavaScriptCore进行应用的升级,而无需等待App Store的审核流程。这对于那些缺少专业的iOS QA(质量保障)团队的小公司来讲是很是便利的,由于iOS团队能够在发布新功能以后进行热更新。github

使用React Native一年以后,咱们的iOS开发周期明显变快了,这得益于很高的开发效率。好比:面试

  • 基于现有的前端架构,咱们在两周以内就发布了V1.0的版本。react-native

  • 相比于Auto Layout,基于Flexbox的样式能够节省一半的代码,而且更容易理解。设计模式

  • 使用Flux设计模式,iOS和Web应用共享了storeaction的98%的代码。架构

性能

React Native在后台线程运行JavaScript并发送极小的代码到主线程中。事实证实,React Native相比于Objective-C或Swift编写的原生iOS应用来讲有一些性能差别!并发

Reactiflux小组的性能演示,该组有超过1.1万个会员 —— UI和JS线程大多数都是60FPS

然而,咱们当初开始构建iOS应用时发现聊天滚动视图的性能并不使人满意,尤为是一些活跃的聊天分组。因而,咱们决定使用ComponentKit构建聊天视图并编写必要的桥接代码代替原有的方案。当JS线程在完成一些繁重任务的时候,类库也没法提供原生那样流畅的动画(译注:以前动画是在JS线程执行,目前有人提交了一份代码,有望使用原生iOS动画接口),所以咱们在抽屉侧滑动画上继续使用PopAnimation

注: 做者称该应用仅聊天视图和抽屉动画是原生代码实现的,其余均由React Native实现。

当React Native Android版本发布时,咱们也尝试在Android设备上运行应用,但遗憾的是,咱们遇到了一些性能问题,只好暂时放弃。Android开发主管Miguel是这样说的:

很遗憾,不一样Android设备的性能差别很大,这点明显落后于iOS。咱们可让应用运行地很快,可是性能——尤为是触摸事件,即便在更高端设备上也不能使人满意。而且在早期,因为React Native Android缺少完善的功能,咱们从产品原型过渡到成品应用比iOS花费了更多时间。

可用性

React Native让开发工做更简洁,使得开发者能够专一于每一个新版本核心功能的开发。应用内自带的开发者菜单为我节省了大量的时间。

其中我最喜欢的一个功能是Show Inspector(审查工具),它能够即时展示交互视图的层级结构以及被选组件中全部必要的样式信息,这无疑是我用过的最棒的iOS审查工具。

社区

React Native项目每两周会发布一个新版本,其中包含一些新的特性以及修复的bug。这有利有弊,比如iOS几个月的稳定版本的发布,新的代码须要额外的时间进行升级,尤为是生产环境中的应用。所以,这也是到目前为止咱们fork的React Native仓库只有四次主要升级的缘由。

因为React Native还不太成熟,资源有限,也不完整。但随着它愈来愈流行,在不久以后必定能遇上其余成熟的技术。下面列出了一些实用的资源,我也常常在它的仓库上提问和获取最新的信息:

译注:中文资源:React Native学习指南

总的来讲,React Native颇有潜力,它把咱们团队的移动应用开发带上了一个新的台阶。像我这样原生的iOS开发者能够平滑地过渡到React Native,这有些出乎个人意料。同时,它也帮助我扩展职业技能,由于我也能够很轻松地向React编写的Web应用贡献代码了。

相关文章
相关标签/搜索