近期和一些朋友聊到了 React-Native
的官方重构状态,而刚好近期发布的 0.59.x 系列版本中,上层设计出现了比较大的调整,结合体验之后的状态,就想聊聊 React-Native
的现状、新版本的升级体验、还有新支持的 React Hook 等特性。
本篇并不是源码解析和教程,更多是讨论和记录描述。笔者一直致力于 Android
、React-Native
、Flutter
等大前端开发,有时也会写写 React
和 Vue
,本篇文章也是希望能够和大家交流,可以的话欢迎提出问题或者建议,最后同样希望文章能对你有所启发。
皮一下,React-Native 项目发布4年多了,还没有 1.0 版本么(¬_¬)
![3e4981dab20ffa98b851d49dc146aeb6.png](https://img-blog.csdnimg.cn/img_convert/3e4981dab20ffa98b851d49dc146aeb6.png)
一、现状
相信大家对于 React-Native
“要凉” 的第一印象,应该是来自于 Aribnb 的 “为什么 Airbnb 放弃了 React Native” ,如文中描述的 React-Native
确实会遇到一些性能瓶颈,但这取决于和谁对比,个人认为 代码是服务于业务的,抛开场景比性能的做法其实并不严谨。 关键还是在于你如何使用,并且官方与社区是否还活跃和优化。
先说我对跨平台的理解: 一套逻辑可以在多个平台运行,更多是避免各平台业务逻辑不统一,而对工作量的减轻是不明显!不明显!不明显的! 同时一个企业项目大了之后,一般也不会局限于一个框架之内。
事实上 Facebook 也并没有放弃 React-Native
,在经历 《Facebook 正在重构 React Native,将重写大量底层》 的官宣之后,“四舍五入”将近一年后的今天,底层重构虽然还没有正式发布,但是近期的新版本 0.59.x 也给出了不错的答卷。
新版本中主要有以下几点:
- 1、减轻了
React-Native
自身框架,将 webView 、viewPager、netinfo、async-storage 等内置包拆分,通过社区独立维护,并逐步模糊React
和React-Native
的界限。 - 2、更新 JavaScriptCore 、upgrade 和 CLI 工具。
- 3、支持 React Hooks 。
- 4、修复了
FlatList
等列表控件中的诸多问题。
未来版本的重构主要目标有:
- 1、减轻 JSBridge 的依赖。
- 2、通过 Fabric UI架构,将
Shadow
层、UIManager
、NativeModule
从 Java 移到 C++ 中,从而支持 双向的同步和异步渲染与调用 。
可以看出 0.59 版本中的重构和拆分,都是在为了下一步的重构做准备,更多具体的下一代重构内容分析,可以在京东的 《庖丁解牛!深入剖析 React Nat