React Native 和 Flutter 是主要的跨平台框架。两者都允许 iOS 和 Android 应用程序使用同一个代码库。本指南对两者进行了比较,以帮助您进行选择。
概述
反应本机
脸书。 2015. JavaScript/[TypeScript0。
颤动
谷歌。 2018. 飞镖。
市场份额
两者都被广泛采用。较老的 React Native,Flutter 增长很快。
语言
反应本机
JavaScript/[TypeScript1。 Web 开发人员熟悉。
颤动
飞镖。不太为人所知,但很容易学习。
学习曲线
JS 开发人员:最快的 React Native。 从头开始:Flutter 可以更加一致。
架构
反应本机
JS 和原生之间的桥梁。新架构(Fabric)改进。
颤动
自己的渲染引擎。 Skia 图形库。
影响
Flutter:对 UI 的更多控制。 RN:最接近母语。
##性能
反应本机
很好,但桥可能是一个瓶颈。
颤动
一般都比较优越。编译为本机代码。
实践中
两者对于大多数应用程序来说都足够了。
用户界面和设计
反应本机
使用本机组件。默认情况下本机外观。
颤动
自己的小部件。跨平台一致的 UI。
定制
颤振:更多控制。 RN:更轻松地原生。
热重载
反应本机
快速刷新。非常好。
颤动
热重载。出色的。
开发者经验
两者都使开发速度更快。
生态系统
反应本机
更大。更多可用的库。
颤动
成长很快。出版.开发。
质量
RN:更多选择,质量参差不齐。 颤动:更少,更一致。
本机库
反应本机
通过桥梁访问。这可能很费力。
颤动
平台渠道。复杂程度类似。
##社区
反应本机
更大,更成熟。
颤动
成长很快。非常活跃。
支持
两者都有丰富的学习资源。
公司使用
反应本机
Facebook、Instagram、沃尔玛、Shopify。
颤动
谷歌、阿里巴巴、宝马、Nubank。
工具
反应本机
世博会简化了很多。 npx,Metro 捆绑器。
颤动
统一的 Flutter CLI。集成工具。
IDE
两者都可以很好地与 VS Code 配合使用。
测试
反应本机
Jest,React Native 测试库。
颤动
小部件测试,内置集成测试。
覆盖范围
Flutter:更集成的测试。
持续集成/持续交付
反应本机
Fastlane、应用程序中心、EAS 构建。
颤动
Codemagic、GitHub Actions、Fastlane。
轻松
两者都有很好的支持。
网络支持
反应本机
反应本机网络。有用。
颤动
颤动网络。改善。
成熟度
两者都有效,但都有局限性。
状态管理
反应本机
Redux、MobX、Zustand、上下文。
颤动
提供商、Riverpod、Bloc、GetX。
选择
RN:更多 React 生态系统选项。 颤动:新兴模式。
何时选择 React Native
- 具有 React/JS 经验的团队
- 与 React web 共享代码
- 需要很多第三方库
- 原生外观是优先考虑的
何时选择 Flutter
- 从头开始的新项目
- 跨平台一致的用户界面很重要
- 关键性能
- 也有桌面/嵌入式
优点和缺点
反应本机
优点:JS 生态系统、原生外观、Expo。 缺点:性能、碎片。
颤动
优点:性能、丰富的小部件、工具。 缺点:Dart,应用程序尺寸较大。
迁移
从 RN 到 Flutter
重写。逻辑可能类似。
从 Flutter 到 RN
也重写一下。
原生交叉
比交叉更复杂。
未来
反应本机
新的架构改进了很多。它继续发展。
颤动
来自谷歌的大力投资。多平台是重点。
结论
两者都是绝佳的选择。适用于 JS 团队和 Web 集成的 React Native。 Flutter 的性能、自定义 UI 和新项目。如果可以的话,两者都尝试一下。
##常见问题解答
1) 哪个更容易学习? 这取决于背景。 JS 开发人员:RN。从头开始:类似。
2)哪一个性能更好? 总体颤振,但差异减小。
3) 我可以将它用于复杂的应用程序吗? 是的,两者都有。大公司都用它。
4) 哪一个会有更好的未来? 两者都有强大的后盾。可以安全领养。
5) 我需要懂母语吗? 帮助集成,但不是必需的。
另请阅读
- [TypeScript 应用程序:TypeScript 开发指南2
- [应用架构:基本原理和模式3
- [应用程序值得:决定您的企业是否需要应用程序的完整指南4
- [混合应用程序是什么5
- [自定义应用程序6
- [自定义应用程序 - 示例清单7