React Native 的 2017 年终总结

3,297 阅读5分钟
  • 本文为 Marno 原创,转载必须保留出处!
  • 公众号【 aMarno 】,关注后回复 RN 加入交流群
  • React Native 优秀开源项目大全:http://www.marno.cn

又到了写年终总结的时候,但今年不想写我的事情,而是想总结一下 React Native 的这一年。知道有很多读者是因为 RN 才关注我的,特别感谢大家的关注。在过去一年,我坚持只发原创文章,其中大部分是关于 RN 的。但因工作变动,在 2017 下半年里,RN 不再是我主要研究的方向了,所以更新速度就慢了。可写作是我的个人爱好,我会坚持下去,也会在 2018 年和大家分享更多优质的原创内容。

2017这一年,
React Native 共更新 92 个版本。
平均 7.67 个/月,1.77 个/周。
其中正式版共 12 个(有 release 日志)
平均 1.0 个/月,在按照 fb 的规划进行
17 年的第一个版本是 0.40.0
最后一个版本是 0.52.0-rc0
7 月份发布次数最多,共 14 个版本。
1 月和 12 月发布最少,均为 3 个版本。

每个月发布版本的数量▲
1801046924.jpg

在这 92 个版中,更新的内容有:
仅针对 Android: 新特性 218 个、修复 bug 79 个 
仅针对 iOS: 新特性 286 个、修复 bug 96 个 
双平台通用: 新特性 608 个、修复 bug 157 个、重大变更 35 个

现在 RN 更新的速度已经比刚出来那会儿慢了,但是一个月一个正式版,还是让许多使用 RN 的开发者感到苦恼。因为经常在更新后项目就跑不起来了,所以很多团队都选择了不更新,但也就没法用最新的 API 了。我觉得最好进行跨版本升级,因为有些版本之间的差别不是很大,我们可以忽略掉。但跨度也不要太大,不然出了问题都不知道去哪里找原因,隔个两到三个版本升级比较合适。

每个版本更新内容统计▲
1801046779.jpg

更新了这么内容,有哪些是比较重要的呢?下面我们一起来回顾下,今年 RN 添加了哪些实用的新功能(可能会漏,欢迎留言补充)。

0.42 版本

  • iOS:不再支持 Xcode7.x 编译,升级为 Xcode8.x
  • Android:移除 RecyclerViewBackedScrollView 组件
  • 通用:WebView 组件新增 injectJavaScript 方法
  • 通用:为组件的部分属性添加百分比支持
  • 通用: init 项目时可以添加模板

0.43 版本

  • 通用:FlatList 正式发布
  • 通用:样式支持 alignContent 属性
  • 通用:init 项目时的模板可以自定义了

0.44 版本

  • 通用:不再支持通过 @provides NameOfModule 导入模块
  • 通用:将 Navigator 组件标记为过期
  • iOS:移除 MapViewIOS 组件,建议使用 Airbnb 的 react-native-maps

0.45 版本

  • 通用:添加支持通过 CameraRoll 组件访问视频

0.46 版本

  • 通用:引入 ImageBackground 组件

0.47 版本

  • Android: link 命令支持关联 Kotlin 模块
  • Android:为 AndroidViewPager 添加 peekEnabled 属性

0.48 版本

  • iOS:移除 AdSupportIOS 组件

0.49 版本

  • 通用:将 index.ios.js 与 index.android.js 合并为 index.js
  • 通用:TextInput 组件添加 autoGrow 属性

0.50 版本

  • 通用: 组件中不再支持嵌套组件
  • 通用:添加 SwipeableFlatList 组件(实验性)
  • 通用:引入  组件
  • Android:添加对 Android 8.0 的支持

0.51 版本

  • 通用:padding,margin,border 等属性支持 RTL 布局方式

当然还有很多其他更新,比如执行效率上的提升、代码结构的优化等,我就不一一列举了。要问 RN 有没有比去年更好用?确实还是更好用了一些,不过我总觉得今年的更新不是特别给力,不知道大家有没有这样感觉。但至少我们还是可以看出, Facebook 在努力让 RN 变得更好。

这一年里,我一共翻译了 7次更新日志,大概统计了下这些日志在各渠道的阅读总数,至少应该在 70K 以上了,作为比较枯燥的“更新日志”还能有这么多人看,我已经很是欣慰了。有想了解更多更新内容的朋友,可以去看下每个版本对应的中文更新日志。

附上之前几次翻译的日志链接:

翻译这些内容的过程并不轻松,为了尽可能准确的还原英文原意,几乎每一条更新日志的详情我都会去仔细看,只有自己理解了以后才会去翻译。尽管这件事占用了我大量的个人时间,而且可能最后看的人也并不是很多,但我觉得既然做了,就力求做到准确,不然可能会让看的人比较困惑。

一整年过去了,RN 的版本从 0.40.0 到更新到了 0.52.0-rc0,如果保持这样的节奏更新下去,那我们至少也得在 4 年后,也就是 2021 年,才能等到 RN 1.0.0 的版本了。不过前提是 RN 还能维护到那个时候去,毕竟现在技术更新换代的节奏越来越快了。像微信小程序,支付宝小程序这样的技术,都在挤压着 RN 的生存空间。加上 RN 自身实现机制的约束,导致它不可能承载过于复杂的业务,那些追求流畅用户体验的产品,依然还是会选择将原生开发作为业务的主要载体。 至于以后 RN 会怎么发展,我们能做的也只是献上美好的祝福了。

最后做个小小的统计,看下现在哪个版本的 RN 用的人最多?欢迎大家在留言区评论回复。