react-native 的 pros cons
认真看了 airbnb 关于 react-native 的一系列文章,结合在老东家 Strikingly 将近两年重度使用 rn 经历,感触特别深。
唯一的区别是之前我们在最初就用了 TypeScript 解决了很多类型、重构的问题;与之相对的是编译速度、debug 的难度都更高了。
正好两周前在团队内部分享了 rn 的 pros cons,感觉不需要整理太多了,airbnb 全都说到了。把当时的提纲贴出来,期待更多的讨论。
PROS
- 技术栈统一
- 较 Html5 更快、更原生,开发成本相对接近
- 多平台代码高度统一
- 声明式的代码方式更科学
- flex 布局有优势
- 热更新,便于快速迭代(合理的后退机制)
- 组件化的快速改造和复用能力
- react-native to anything else 的可能性(比如 -dom)
- 纯前端开发的快速上手,和纵向 feature 切割的能力CONS
- 社区活跃度不高
- 第三方依赖痛苦(只支持 iOS 的库比较多)
- TypeScript:typing 不完整、落后
- 构建系统复杂
- react + redux 代码量太大
- debugging 难度相对较高(raw javascript)
- 距离 OS 新特性较远(nativeModule、nativeComponent 等较为复杂)
- 不得不本地维护很多 patch 来修复 rn 的 bug
- UI render 效率一般(体现在 List)
- rn 全异步带来的困难
- 单线程 js 带来的性能瓶颈