转载

React Native杂谈

和 reactivecocoa 一样, react-native 也很早就开始关注了,之所以到前段时间才学习,原因有几点

  • 整个项目已经相对成熟
  • 国内外社区比较活跃
  • JavaScript和React学习成本并没有想象的那么高

对这前两个原因我觉得有必要详细说明下,下面的内容我会用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 ManagerFacebook 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来写一个商业项目我想会遇到以下问题:

  • 多少会涉及到native平台的代码,除非你的项目非常简单,没有涉及到第三方平台(第三方分享、登录),没有复杂的页面,没有复杂的处理,没有复杂的动画。举个例子,比如APP有清除缓存功能,那么你必须得写两套代码,个人认为无论RN迭代到什么程度,都还是有无法同时满足两个平台的情况,这时候就需要依靠第三方库了。
  • 平台之间的UI差异,RN的理念是 write once, run anywhere ,所以你还是需要做好适配平台的准备,这是几乎也是无法避免的,另外可能相同的控件在不同平台上的表现也有差异,我曾经遇到过 TextInput 控件的 placeholder 位置在两个平台下位置不同情况。
  • 动画,前面我也提到动画对于性能会存在一定的影响,而且复杂的动画对于RN来说是非常困难的
  • RN本身的bug问题,这个问题或许在早期版本尤为突出,一旦遇到只能寄希望于RN团队尽快解决,这种对于商业项目就较为麻烦了

另外对于初学者,MAC平台我推荐使用编辑器: Atom ,配合前面提到的基于Atom的IDE: nuclide ,再加上几个Atom插件:

原文  http://bawn.github.io/react native/2016/04/15/ReactNative.html
正文到此结束
Loading...