ReactNative何去何从?
一、 ReactNative是什么?
React Native (简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 React 在原生移动应用平台的衍生产物,目前支持iOS和安卓两大平台。
一次学习,随处编写:web、小程序、android/ios app、windows/macOS app等
二、 原理分析
0.68版本之前(异步、单线程、额外开销)
每次利用 Bridge 发送数据时,都需要转换为 JSON, 而收到数据时也需要进行解码
新架构(同步执行、并发、低开销、类型安全、渲染更快)
在 JSI 里 Native 方法会通过 C++ Host Objects 暴露给 JS, 而 JS 可以持有对这些对象的引用,并且使用这些引用直接调用对应的方法
与flutter有什么不同
flutter是直接在内部渲染,并将画面通过canvas绘制在屏幕上,自由度更高
三、 现状
混合技术栈的历程
1、核心插件无人维护
react-native-camera
react-native-image-helper
react-native-popover-menu
exit-app
datetimepicker...
2、 新架构仍在完善
传统原生模块对turbo/fabric原生模块的向后兼容的改造成本
新架构对于 TypeScript 的支持尚处于 beta 测试阶段
react-native-skia的新可能
...
3、 社区热度降低
核心功能得不到支持
开发者信心不够
...
五、 总结
个人感觉RN版本一直处于0.xx,属于一个无限可能的状态。面对原生系统,跟原生APP开发相比,RN也是直接渲染原生界面,而flutter目前自带渲染引擎及框架代码,在渲染这块独具优势,但在跨平台应用方面无法充分利用特定功能和能力,脱离不开原生。并且新架构的出现,也解决了之前一直被诟病的通信慢(JSI)、启动慢(Turbo)、滚动白屏(Fabric)等。虽然社区热度在降低,但用户群体足够大,总能找到合适的方案。
与此同时,我们也要意识到,每一款技术都有其适用的场景和局限性,我们需要在实际开发中根据项目需求和技术特点做出合理的选择和应用。