和 reactivecocoa 一样, react-native 也很早就开始关注了,之所以到前段时间才学习,原因有几点
对这前两个原因我觉得有必要详细说明下,下面的内容我会用RN缩写来代替react-native
RN的更新频率很高,从目前来看差不多半个多月一个版本,从去年的3月底发布一个版本 0.1.0
以来到现在的 0.25.0
为止一共发布了82个版本,当然这里面包含很多rc版,而且从Star数来看RN已经成为facebook排名第二的开源项目了,可见facebook对RN的重视程度。
其实影响一个项目的流行程度很大一部分取决于其社区的活跃程度,RN社区现在这么活跃也是得益于facebook的推广,比如这两年的F8大会、开源基于Atom的IDE: nuclide 、第三方库搜索网站 js.coach ,以及自家的 Facebook Ads Manager
和 Facebook Groups
项目使用RN开发等,国内的也有不错的交流平台,比如 react native中文社区 。另外github上两个RN学习资料、组件等的集合项目 awesome-react-native 和 react-native-guide 都是不错的指引。
我挑了几个大家比较关心的问题一一说下自己的看法和理解
我想对于学习一项新技能,都会首先去了解需要什么基本条件。对于RN来说,需要的当然就是JavaScript和React基础,但我并没有刻意的去学习JavaScript和React,而是直接上手RN的同时了解和学习这两样。个人认为对于有开发经验的程序员来说,语法并不是问题,即使对于JavaScript这种我认为很”随便”的语言也是一样,所以当你想学习RN但是没有JavaScript和React经验,根本不用担心因为没有基础给你带来多大的阻碍。
关于性能问题有很多文章都分析过,我只说自己的主观感受,对于iOS而言,只要不是非常复杂的页面性能基本接近native,不过有时候你可能会在页面切换的时候察觉到略微的卡顿。安卓可能是平台或者RN优化的问题,目前性能表现不是非常理想,不过完全可以接受。这里需要提一下,RN上的动画会对性能造成一定的影响,所以并不建议使用大量动画,官网也有文档阐述了性能问题以及出现的原因,如果遇到性能问题,强烈建议仔细阅读。
完全用RN来写一个商业项目我想会遇到以下问题:
write once, run anywhere
,所以你还是需要做好适配平台的准备,这是几乎也是无法避免的,另外可能相同的控件在不同平台上的表现也有差异,我曾经遇到过 TextInput
控件的 placeholder
位置在两个平台下位置不同情况。 另外对于初学者,MAC平台我推荐使用编辑器: Atom ,配合前面提到的基于Atom的IDE: nuclide ,再加上几个Atom插件: