最近在做一个练手小项目,使用的框架是react native,以下就来谈谈我们小组在选型之初的一些调研。
首先,没有选择原生开发是因为时间成本有限,开发成本高,很可能在短期内不会又很深的技术沉淀,只能"照猫画虎"做个表壳出来。所以我们考虑选择跨平台开发框架。
我整理了一下目前市面上相对来说比较主流的的移动端开发方案:
可以看到主要有五种形式:
- web app (html5 + js)
- hybrid App (原生开发+web)
- 语言编辑转换
- 原生渲染(RN, Weex, 快应用)
- 自绘UI(Flutter)。
具体这五种形式有什么区别可以参考这篇文章看看详细的解说
考虑到开发成本以及对以上五种移动端开发模式的利弊分析,我们在初期考虑在RN与Flutter之间选择。
以下是我在项目初期对RN和flutter各自特性进行的优劣对比:
当时出于对热更新以及生态,框架成熟度的考虑,选用了react native。其中还有一个缘由是因为这篇文章:Why you should keep faith with React Native?,感兴趣的同学可以看看。
在费时1个月以后,我们用react native实现的简易小项目也初步成型,当然在这过程中也不可避免的遇到了上述提到的坑,比如:
- 组件渲染在ios端和android不一致
- 手机权限(例如:相册,相机等)问题在ios在android写法不一致,要写很多hard code,对于开发者来说特别不友好。
- 编译速度慢(没有对比flutter,不知道使用flutter,不知道使用flutter是否会有很大的提升)
- ……
所以使用rn的时候真的是要特别注意跨平台兼容的问题。