flutter 是直接把代码转换为原生,那为什么这么多年 react-native 不学习这个优点?

2023-03-26 12:20:05 +08:00
 user667788

我看了很多评测、文章,都说 flutter 性能更好

我就觉得很好奇, 为什么这么多年,react-native 不把这个优点学习过来呢

还是说,rn 团队没有这么大的动力去做这个改造?

谢谢

5491 次点击
所在节点    Flutter
18 条回复
Trello
2023-03-26 12:29:26 +08:00
就 flutter 那鹅心人的嵌套写法,我就用不下去。
WebKit
2023-03-26 12:49:09 +08:00
Flutter 不是把代码转原生,而是自己实现了一套 UI 组件的绘制渲染。
cornetCat
2023-03-26 13:08:56 +08:00
某种意义上 RN 比 flutter 更偏向你说的内容啊...
flutter 就是一个画布...
okakuyang
2023-03-26 13:32:50 +08:00
两个东西。

react-native 的生态有一半是建立在 react 上的。
react 要用 js 运行时来执行,react-native 要操作真实原生 UI 控件。
优势也是在这里。
因为它是原生控件,如果系统 UI 框架更新了,react-native 可以很方便的利用这些改进。

相对的 flutter 的性能是因为它不需要一个 js 运行时来处理虚拟 dom 。
他这部分也是原生实现的,但是它并没有操控原生 UI 控件。
它是自己完成了触控逻辑处理,UI 排版绘制这些工作。
这就有了下面的问题。

它不会因为原生 UI 控件的改变,导致自己绘制出错。
相对的,它无法利用原生 UI 控件的新增功能。
它所有的新增功能都需要 flutter 生态自己提供。
hornorForGod
2023-03-26 16:24:54 +08:00
flutter 是自绘类似 qt,gdi 。react 是把代码转义成目标系统控件。
stabc
2023-03-26 18:09:02 +08:00
无脑 Flutter 吧,RN 那个新框架我测试过性能,渲染几百个 View 就开始拉夸
XCFOX
2023-03-26 18:30:50 +08:00
Flutter 真的性能更好吗?

基于 Flutter 的《哔哩哔哩漫画》在翻页和滚动时会有明显卡顿,这个问题是普遍存在的( https://github.com/flutter/flutter/projects/188)。
另外一个基于 Flutter 的《彩云小梦》甚至连高帧率都没适配,可以说是我手机上是最卡的 APP 。

Flutter 团队为此不得不抛弃 Skia 自制一个渲染引擎 Impeller( https://github.com/flutter/flutter/wiki/Impeller)。

反而 RN 使用原生组件在动画渲染上是没有太大问题的。
IvanLi127
2023-03-26 19:54:23 +08:00
我以前用的时候,一直不能理解为啥 flutter 在滚动上丢帧特别严重,我每次写都在怀疑是不是我做错什么了。。。

性能好到底是何啥比的。。。。
churchill
2023-03-26 20:11:08 +08:00
flutter 的原生能力是 dart 的 AOT 提供的,react-native 要想做必须先要实现一个有 AOT 能力的 JS 引擎,考虑到现有生态的兼容性,这可能是个很难完成的任务。
lxiian
2023-03-26 20:15:04 +08:00
flutter 之前 skia 在 ios 上表现一般,掉帧严重,在 android 上还好。 不过听说换引擎了,好久没用 flutter 了,不知道现在怎么样了
gogozs
2023-03-26 20:16:49 +08:00
你先搜索一下,编译型和解释型语言的区别
zqlcrow
2023-03-26 23:51:35 +08:00
说反了吧。

react-native 才是,原生代码实现。
所以你可以想一想,有多恐怖。
写的代码,层层处理,最终到原生。


flutter 才是不原生实现,自己绘制,所以解决了性能问题。


从本贴的回复可知,许多人根本连基础都没了解过,就开始指点江山了。
这甚至是,官网入门基础介绍的最前面的内容之一......
HugoChao
2023-03-27 00:14:57 +08:00
RN 写的的 discord 很流畅
DOLLOR
2023-03-27 00:39:56 +08:00
flutter 真没宣传中的那么美好,看上面大家的说法,看来不只我一个觉得 flutter 应用卡顿。
或许这种跨平台应用,本来就不该指望“性能”吧。
meteor957
2023-03-27 00:45:24 +08:00
无脑 RN
stabc
2023-03-27 01:32:56 +08:00
Discord 的整个框架是 RN 的,但核心聊天视图一直是调用原生组件,这也是它流畅的原因。即使是用户列表之类的简单列表,RN 也遇到严重性能问题,导致 Discord 成立了一个专门的”性能提升小组“来处理这个问题。
vivipure
2023-03-27 09:07:24 +08:00
热更新功能还是刚需
dreamramon
2023-03-27 10:28:05 +08:00
无脑 rn ,flutter 就算了吧,小团队没空成本搞那么多性能的的 workround 去 压榨性能。
rn 可以热更,可以快速迭代业务,性能可以压榨,但是初始版本就不算差,再配合边缘计算。
延迟=处理+网络来回+渲染
基于 js 的生态,边缘计算直接把处理和网络搞定,开箱可用。
flutter ,至少还不到开箱可用吧。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/927244

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX