极客视点
极客时间编辑部
极客时间编辑部
113241 人已学习
免费领取
课程目录
已完结/共 3766 讲
2020年09月 (90讲)
时长 05:33
2020年08月 (93讲)
2020年07月 (93讲)
时长 05:51
2020年06月 (90讲)
2020年05月 (93讲)
2020年04月 (90讲)
2020年03月 (92讲)
时长 04:14
2020年02月 (87讲)
2020年01月 (91讲)
时长 00:00
2019年12月 (93讲)
2019年11月 (89讲)
2019年10月 (92讲)
2019年09月 (90讲)
时长 00:00
2019年08月 (91讲)
2019年07月 (92讲)
时长 03:45
2019年06月 (90讲)
2019年05月 (99讲)
2019年04月 (114讲)
2019年03月 (122讲)
2019年02月 (102讲)
2019年01月 (104讲)
2018年12月 (98讲)
2018年11月 (105讲)
时长 01:23
2018年10月 (123讲)
时长 02:06
2018年09月 (119讲)
2018年08月 (123讲)
2018年07月 (124讲)
2018年06月 (119讲)
时长 02:11
2018年05月 (124讲)
时长 03:16
2018年04月 (120讲)
2018年03月 (124讲)
2018年02月 (112讲)
2018年01月 (124讲)
时长 02:30
时长 02:34
2017年12月 (124讲)
时长 03:09
2017年11月 (120讲)
2017年10月 (86讲)
时长 03:18
时长 03:31
时长 04:25
极客视点
15
15
1.0x
00:00/06:21
登录|注册

观点:为什么Flutter还不是最成熟的跨端框架?

讲述:丁婵大小:2.90M时长:06:21
最近一段时间 Flutter 的技术热度非常高,各个大厂和很多开发者都在积极的学习并尝试。关于 Flutter 的科普文章已经非常多了,Flutter 的优点也不再赘述。本文结合 Flutter 和 React Native 的实际项目中遇到的问题,进行相对客观的对比,也指出一些现阶段 Flutter 的不足之处,避免开发者采坑。

1.JS vs Dart

React Native 采用 JS 作为开发语言。由于 JS 的良好群众基础和较低的学习门槛,基本上所有合格的前端开发者都可以低成本的学习并使用 React Native 进行跨端开发。
谷歌让 Flutter 采用 Dart 进行开发,可能是基于对未来的判断,希望 Dart 可以逐步取代 JS 成为前端的开发标准。实际上 Dart 的语法更接近原生开发语言,用 Java 或者 Swift 的开发者会更加喜欢。
综上,React Native 暂时胜出。

2. 开发调试环境

我们团队同时做过 React Native 和 Flutter 的开发项目,从工具链来说,两者都非常成熟,调试都非常方便。但从开发环境的搭建来看,尤其是集成到已有 APP 项目中,React Native 相对来说就容易太多了。
业务模块的集成打包方面,React Native 也更加方便和灵活,可以按不同 GIT 库进行业务管理,而 Flutter 开发需要集中式管理,在同一个 GIT 中进行维护。
综上,React Native 暂时胜出。

3. 原生混合开发支持

原生混合开发方面是 React Native 的强项。由于 React Native 的组件原本就是通过原生 UI 系统进行渲染,所以可以非常容易的实现在原生页面中嵌入 React Native 的 RootView 或者在 React Native 页面中嵌入原生 UI 组件,对已有 APP 上进行混合开发支持非常友好。
而 Flutter 无论是在原生页面中嵌入 FlutterView 或者在 Flutter 页面中嵌入原生 UI 组件,都会有内存或者性能等不少问题。目前国内实践比较多的是闲鱼团队,也开源了 FlutterBoost 项目尝试解决这个问题,但是官方始终没有非常完美的解决方案。所以 Flutter 更适合在全新 APP 上使用。
综上,React Native 暂时胜出。

4. 热更新支持

热更新一直以来都是 React Native 框架的卖点之一,而谷歌则完全没有计划支持 Flutter 热更新功能。
从目前了解的信息来看,京东 JDFlutter 在 Android 平台已经实现了热更新,但是实际效果和灵活程度还是远远不及 React Native。而受限于苹果的限制,iOS 平台上没有一家公司真正意义上实现了 Flutter 热更新。开源项目 MXFlutter 通过 JS 开发的方式,间接实现了 Flutter 动态化。虽然是很有价值的尝试,但是抛弃 Dart 改为 JS 开发也会带来其他更多的问题。
综上,React Native 暂时胜出。

5. 全平台支持

除了 Android、iOS 平台之外,React Native 已经可以通过第三方工具支持 Windows UMP、Web、Desktop、macOS,甚至近期京东开源的 Alita 项目已经实现 React Native 到微信小程序的打通。
而 Flutter 虽然已经官方支持了 Android、iOS、Desktop、Web,但是实际测试下来成熟度还不够。
综上,React Native 暂时胜出。

6. 开发者生态支持

React Native 的 GitHub Star 已经达到了 80K,而且借助于 React 生态,有大量的高质量的第三方插件可以使用,整个开发者生态非常完善和活跃。
相比之下,Flutter 的生态刚刚处于早期阶段,虽然 GitHub Star 也已经有 72K,但是整体可用的第三方库的数量不如 React Native。
综上,React Native 暂时胜出。

7. 框架稳定性

React Native 经过 4 年的发展和不断迭代,目前的稳定性和兼容性已经有了很大的改善。GitHub 上 open issue 只有 500 多。不过由于 React Native 整体架构设计的限制,还比较依赖原生组件,未来需要持续的完善稳定性和兼容性。
Flutter 的版本号已经快速迭代到了 1.7,不过性能和稳定性方面还有很长的路要走,更让人担忧的是 GitHub 上有 7000 多的 open issue。而且 Flutter 引擎部分大量 C 代码,比较晦涩难懂,一般团队很难去优化进行稳定性加固。
综上,React Native 暂时胜出。
从以上内容来看,Flutter 真的不如 React Native 吗?其实,技术层面 React Native 和 Flutter 没有孰优孰劣的对立关系,都是非常出色的跨端框架。虽然上面列了不少 Flutter 的问题,但是这些都不是不能解决的问题,而是处于早期阶段任何框架都可能遇到的问题。相反从整体架构设计和整体规划上来说,我认为 Flutter 比 React Native 更加出色,属于下一代的跨端框架。我们可以预见到在几年后 Google Fuchsia 系统正式发布的时候,这才是 Flutter 可以大显身手的时刻。
但是目前阶段,React Native 才是业内最成熟的跨端框架。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
免费领取
登录 后留言

全部留言(4)

  • 最新
  • 精选
  • 耗子点灯
    一点也不同意文章观点,感觉是完全没用过flutter的人写的,有误导嫌疑
    15
  • 茶余饭后
    没用过Flutter,但React Native 就是个坑,性能堪忧,现在很多三方库都不维护了
    2
    7
  • 法鲁格
    前端在移动开发上找存在感😂
    4
  • xgqfrms
    https://github.com/areslabs/alita
    1
收起评论
大纲
固定大纲
1.JS vs Dart
2. 开发调试环境
3. 原生混合开发支持
4. 热更新支持
5. 全平台支持
6. 开发者生态支持
7. 框架稳定性
显示
设置
留言
4
收藏
50
沉浸
阅读
分享
手机端
快捷键
回顶部