最近项目组要搞重构,之前只有 Android 端,现在的要求是 Android 和 iOS 都可以用。项目比较庞大,总代码行数在 30W+(包括 google 库),其中大部分代码是业务逻辑。项目是什么名字这里不方便说,总之是一个业务逻辑十分庞大的工具类 App,不涉及金融。 目前的跨端方案有大概几种:ReactNative、Weex、Flutter 以及 WebView 容器的 Hybrid。Hybrid 基本上可以直接否掉,App 对性能有一定的要求,所以大概只能在前面三者里面选。
首先:ReactNative 和 Weex 都使用 JavaScript 语言进行开发,这样就会有一个问题,弱类型语言在修改参数类型的时候,如果出错的话不会在编译时候报出来。由于项目比较庞大,每次发版不可能把每一个功能点都回归到。万一修改了一个参数类型,影响没有回归到的功能的话,就可能影响整个线上。那么 TypeScript 是否可以解决这个问题?
如果 TS 可以解决上面的问题,那么 ReactNative 和 Weex 的社区环境怎么样呢,ReactNative 有 20 多万的 userby,weex 只有 9 个。据说 weex 迁到了 Apache,可能有一定的影响。如果要选择,要考虑以下几点:
- 热更新
- 开发效率
- 学习成本(组内全是 Android 开发)
- 构架大型项目的能力
- 视图交互能力,比如把 Android 的 SurfaceView 嵌入到其中,作为部分展示(必须)
- 活跃的社区
那么大家更倾向 ReactNative 还是 Weex 呢?
那么说说 Flutter: Flutter:Flutter 使用 Dart 语言构建,可以规避上面的问题。我个人更倾向于 Flutter,毕竟上面的坑已经趟的差不多了,除了热更新基本都可以实现。但是 Flutter 毕竟是个新鲜的产物,公司的架构委员会可能不会批准,但是回过头想想,Android 刚出世的时候还不是坑一大堆,毕竟社区活跃呀,坑多人更多呀,坑总要有人或者公司带头填,不过大环境下的架构师都会选择稳定(坐享其成!),毕竟是个出了问题就涉及到背锅。
一线开发不好做呀,既要考虑技术要点,又要临危受命考虑领导能不能挺你!