跨平台其实是一个老生常谈的话题,技术方案也是历经变迁,但始终热点不断,究其原因有二:首先,移动端原生技术需要配备 iOS 和 Android 两套团队和技术栈,且存在发版周期限制,开发效率上存在天然缺陷;其次,原生跨平台技术虽然「出道」较早,但是各方案都难以做到完美,因此也没有大一统的技术垄断。 其实这些问题都有一个统一的回答:看(业务、团队等)场景,看(业务、团队等)需求。每一种原生跨端方案在一定历史阶段内,都有其存在的意义和价值。 用数据来说话,可以对比下 Flutter 和 React Native 的几个维度: 1、生态对比 Flutter 的基础数据:Watch 3.6K,Fork 19.9K,Starred 134K,Issues 数量目前一共是 5K+,已关闭 5 万+。 React Native 的基础数据:Watch 3.7K,Fork 21.6K,Starred 100K,Issues 数量 1.9K。 Fork 代表潜在的开发者,有近两万人关注这门语言。Star 数自不必说,证明它的受欢迎程度。选择第三方框架时,看 Star 数也会帮助开发者降低筛选成本。 双方 Watch、Fork 分数相差无几,Star 数落后。结合时间周期考虑,Flutter 胜出。 2、性能 PK List view benchmarking:列表测试。 Heavy animations test:用 Lottie 来测 Heavy animations test,看同屏有很多 AE 动画的情况下,哪方的表现更出色。 Even heavier animations test:更复杂的动画效果上的表现 从 List view 这一项的比较来看,Flutter 吊打 React Native。 从动画这一项来说,React Native 的表现是比 Flutter 胜出的,可能是因为 Flutter 没有针对 Lottie 这种动画场景做优化导致的。 更复杂的动画效果上的表现性能上 Flutter 已经大于等于 React Native。 仅仅综合以上两项对比来看的话, Flutter 已经出现了一定的优势,这也是为什么很多企业和开发者在逐步抛弃 React Native 的原因。 当然,这只是片面分析,要根据实际情况进行取舍,欢迎大家讨论。