2024 年 rn 和 flutter 怎么选 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
weiwenhao
1.01D
V2EX    前端开发

2024 年 rn 和 flutter 怎么选

  •  1
     
  •   weiwenhao
    weiwenhao 2024-08-14 23:56:33 +08:00 5863 次点击
    这是一个创建于 421 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是后端程序员,想独立开发一个 app ,简单的类似记账的 app 。

    翻了了一下之前的帖子,站 flutter 的比较多。

    但是前几个月 google 裁员了一部分 flutter 的人员,这会影响选择么。

    47 条回复    2025-05-20 14:00:56 +08:00
    zchengb
        1
    zchengb  
       2024-08-15 00:21:37 +08:00
    作为 Javaer ,两个框架都体验了一下,感觉还是 RN 比较适合我,但是每次调试、启动真的都很漫长,Flutter 的套娃式写法个人感觉上手有一定门槛,但是调试和启动是真滴快,有点类似于现阶段的油车和电车的区别

    另外我个人还感觉 RN 开发出来的 APP 略微有点掉帧 不知道其他人有没有同感 还是我的错觉?
    zhcode
        2
    zhcode  
       2024-08-15 00:33:53 +08:00
    如果不考虑热更新,选 flutter
    至于裁员的事,参考: https://juejin.cn/post/7362901975421337651
    总结就是,正常人员变动,并非针对 flutter 团队
    WildCat
        3
    WildCat  
       2024-08-15 00:37:37 +08:00
    都不选,选 web
    kindjeff
        4
    kindjeff  
       2024-08-15 00:40:37 +08:00
    后端? flutter 秒了,便利、直觉、自带电池、最佳实践多。

    rn 生态混乱,expo 和裸 rn 库乱成一锅粥; react 不符合(我的)直觉的地方超多;最佳实践少,网上教程基本上能把东西糊出来就完事。
    XCFOX
        5
    XCFOX  
       2024-08-15 01:13:35 +08:00   17
    React Native 和 Flutter 的思路很不一样。

    React Native 秉承 React + web 的理念,使用 React + Javascript 运行时借助各平台原生组件呈现视图。
    React Native 的优势是:可以轻松使用系统原生视图、获得原生级的用户体验和动画流畅度,使用 js ,能够轻松热更新;
    React Native 的缺点是:在各个平台呈现的视图不一致;

    Flutter 使用自己的绘图引擎,在各个平台上自绘视图,运行机制更接近游戏引擎。
    Flutter 的优势是能够自制复杂的视图控,;在所有平台上获得一致的视图;
    Flutter 的缺点是:Flutter 的绘图引擎( Skia 、Impeller )比不过原生的动画流畅性和交互体验,这方面有太多的 issues 了:动画反馈会延迟 1~3 帧,无法使用 Android 12 的滚动回弹动画,滑动和翻页时有明显的掉帧,严重的着色器编译时卡顿( https://docs.flutter.dev/perf/shader ) ;难以在 Flutter 视图内嵌入原生组件

    另外近些年前端的开发理念一直比较领先,React 虽然稍微落后 vue3 、solidjs 、qwik ,但比起 Flutter 还是领先一个大版本的。Flutter 使用嵌套地狱写视图,React 有 jsx ; React 状态管理的 zustand 、jotai 、valti 一个比一个简单易用,Flutter 连 hook 都没有。

    对于不需要复杂的绘图操作的 APP ,也就是普通 新闻、聊天 APP 的话,应该首选 RN + expo ;如果你要开发具有复杂视图的 APP ,比如游戏、谷歌地球、高德地图、Wonderous ,应该首选 Flutter 。
    具体到楼主的 记账 APP ,肯定首先 React Native 。

    建议体验一下 V2EX 的 Flutter 客户端和 React Native 客户端,Flutter 版本滑动、翻页的时候存在明显卡顿,RN 的体验明显好得多。
    https://github.com/guozhigq/flutter_v2ex
    https://github.com/liaoliao666/v2ex
    weiwenhao
        6
    weiwenhao  
    OP
       2024-08-15 01:33:07 +08:00
    @XCFOX 感谢回答,本来已经打算 flutter 了,现在又要考虑一把了。
    3IOhG7M0knRu5UlC
        7
    3IOhG7M0knRu5UlC  
       2024-08-15 02:15:56 +08:00 via Android
    Rn 那几个老问题一直都在挂着
    rocmax
        8
    rocmax  
       2024-08-15 03:34:46 +08:00
    who is using react native:
    https://reactnative.dev/showcase

    Flutter apps in production
    https://flutter.dev/showcase
    rocmax
        9
    rocmax  
       2024-08-15 03:56:12 +08:00   1
    接上条,这几年 flutter 人气挺高的,但我去看看 APP 列表,似乎除了 Google 自家以外好像也没太多大厂在用。。。
    据 youtube 上的调查说欧美是 RN 为主,印度市场 Flutter 为主,国内似乎也是 flutter 多点?

    RN 经过几年重构,性能瓶颈已经解决,expo 开发体验也非常好,可以试试。开发完 RN 还可以无缝转 react/next 做前端。

    Flutter 就得学 dart ,然而除了 flutter 其他地方也没见用 dart 的。我个人意见当初 Flutter 采用 ts 的话现在 RN 坟头草 2 尺高了。
    0001110001011
        10
    0001110001011  
       2024-08-15 04:15:27 +08:00
    flutter 卡的跟个逼一样,多少年了。还没优化好。 瞎折腾,列表卡的想摔手机,优化不动,
    KMpAn8Obw1QhPoEP
        11
    KMpAn8Obw1QhPoEP  
       2024-08-15 04:45:46 +08:00 via Android
    @XCFOX React 开发理念落后其他同类库怎么讲?
    fox0001
        12
    fox0001  
       2024-08-15 07:49:14 +08:00 via Android
    flutter ,阿里有成功案例
    june4
        13
    june4  
       2024-08-15 08:38:46 +08:00
    进 RN 退 web ,flutter 还有换语言这个巨坑
    june4
        14
    june4  
       2024-08-15 08:42:23 +08:00   1
    @enchilada2020 现在除 react 之外的框架都玩响应式 signal 机制了,我自己也从 react 转 solidjs ,不转 vue 因为我更喜欢 jsx ,且 solidjs api 和 react 接近。react 的视图函数重复运行这个底层机制我想不是 web 前端未来发展方向。
    rocmax
        15
    rocmax  
       2024-08-15 08:42:33 +08:00 via Android
    @fox0001 所谓成功案例指的是闲鱼吗?请展开讲讲是怎么个成功法?
    rocmax
        16
    rocmax  
       2024-08-15 08:47:59 +08:00 via Android
    @june4 react complier 马上就到
    daysv
        17
    daysv  
       2024-08-15 08:53:56 +08:00
    无脑 rn 吧,flutter 就没看到什么成功案例
    paranoiagu
        18
    paranoiagu  
       2024-08-15 08:54:42 +08:00 via Android
    不考虑兼容纯血鸿蒙吗?
    NewTab12138
        19
    NewTab12138  
       2024-08-15 08:56:59 +08:00
    @rocmax 国内大厂都在用啊,微信,企业微信,字节,美团都不算大厂? 只是他们没有大量使用而已
    rocmax
        20
    rocmax  
       2024-08-15 09:06:48 +08:00 via Android   2
    @NewTab12138 没大量使用说个 p 啊,主力用 native ,边边角角用点 flutter 搞 kpi 呗。
    Mcx
        21
    Mcx  
       2024-08-15 09:09:32 +08:00
    rn 上次启动一直不太顺利,flutter 直接就能以网页方式进行调试开发,但是成品装在手机上只有 60fps
    NewTab12138
        22
    NewTab12138  
       2024-08-15 09:12:33 +08:00
    @rocmax 微信,企业微信这种开发了这么多年的 app ,核心功能都是原生开发,怎么可能替换成 flutter ,肯定是周边功能用 flutter 实现啊,动动脑子
    theprimone
        23
    theprimone  
       2024-08-15 09:14:51 +08:00
    不知道 Taro 怎么样,很久以前用过,不是说支持转 React.Native ,另外鸿蒙也在路上,不过支持如此多端的转换,难度挺大的样子
    NewTab12138
        24
    NewTab12138  
       2024-08-15 09:21:26 +08:00
    @rocmax 你再看看小米汽车 app ,算最近两年的新 app 了,你看他里面多少模块用 flutter 实现的
    yaodong0126
        25
    yaodong0126  
       2024-08-15 09:24:25 +08:00
    闲鱼拉中拉
    rocmax
        26
    rocmax  
       2024-08-15 09:27:42 +08:00
    @NewTab12138 不主力用 flutter 是怎么证明大厂都喜欢用 flutter 呢,逻辑是不是有点问题?

    对不起,我不是小米汽车用户,这个 app 用户量有 10w 吗?
    倒是搜出个帖子 https://global.v2ex.com/t/1029987
    我只能说都上 unity 了,还有啥必要用 flutter 呢。。。
    gouflv
        27
    gouflv  
       2024-08-15 09:41:15 +08:00 via iPhone
    flutter 的 shaocase 就这?
    zy0829
        28
    zy0829  
       2024-08-15 09:43:13 +08:00
    一直听说 flutter 性能比 RN 好,这个有实践过的哥们谈谈吗。另外我之前一直使用的是 uniapp 像是地图交互,微信登录,手机号一键登录,各种国内支付,等等都有现成的插件,像 RN 跟 flutter 在这方面可以很方便的完成吗
    ynxh
        29
    ynxh  
       2024-08-15 09:44:44 +08:00
    无脑 flutter ,不管是性能还是开发体验,舒服的一批
    taozhiw
        30
    taozhiw  
       2024-08-15 09:44:45 +08:00
    可以都试着用一下,简单写个 Demo 感受下不同。我觉得个人开发没有必要考虑技术栈会不会弃坑,至少近几年这两个都不会弃坑,就算弃坑了社区也能撑一段时间,万一做大做强了砸钱换原生。我也用 Flutter 比较长时间了,没有大坑,而且开发体验很好,做个记账 APP 问题不大。
    n3r0
        31
    n3r0  
       2024-08-15 09:46:46 +08:00
    我也写了一个偏向存钱的记账 App ,用 Flutter 写的,三天上线,一周一更新。
    体验我觉得还行,可以参考一下

    https://z.article.cool/
    NewTab12138
        32
    NewTab12138  
       202-08-15 09:53:32 +08:00
    @rocmax 首先你说的是似乎除了 Google 自家以外好像也没太多大厂在用。。。
    没有大厂在用吗,国内大厂在用的太多了。
    其次大量使用的问题,像微信,企业微信开发 n 年,不可能大量使用 flutter ,但是像美团商家版这些 app ,很多模块基本都是 flutter 开发的,大厂 n 个 app ,每个团队技术栈都不一样,选择也不同。
    至于小米汽车使用 unity ,app 想要展示 3d 车机这种效果,肯定得上 unity ,这样体验才是最好的。至于 app 好不好用,天天网上那么多人还说微信难用。
    minoic
        33
    minoic  
       2024-08-15 09:59:04 +08:00
    @Mcx 高刷新率应该得用外部库设置一下 https://pub.dev/packages/flutter_displaymode
    ala2008
        34
    ala2008  
       2024-08-15 10:00:29 +08:00
    简单的,uniapp 也是不错的选择,还可以直接发小程序
    leegoo
        35
    leegoo  
       2024-08-15 11:26:29 +08:00
    你是做过 java 的,因为 flutter 是用 dart 语言写的,你可以对比一下 dart 语法,你会发现语法很相似。
    什么性能、刷新率这些我觉得都是没必要个人开发者需要关心的。
    tanranran
        36
    tanranran  
       2024-08-15 11:33:34 +08:00
    @zy0829 flutter 都能满足
    kindjeff
        37
    kindjeff  
       2024-08-15 11:40:19 +08:00
    叠个甲,下面都是我作为一个后端开发,对 react 和 react native 不熟悉导致的;但对我来说真的非常不符合直觉,和同样是新手的 flutter 写起来的感觉真的天差地别。

    1. 说 react native 获得原生级的动画体验我觉得就有点怪(除非说的是写原生代码):例如透明度变化的时候可以传 `native: true` 但是 height 变化的时候不行只能靠 js core 。连一个动画都要分的这么清楚很难讲开发体验好。

    2. 再说状态管理,我之前写 rn 用的是 redux ,很多状态管理的逻辑都要跟着数据库更新的逻辑;当时 expo 文档里是 sqlite 和 sqlite/next 库,我想 next 是下一代,我求快求稳那肯定先用 sqlite 。结果写了半天发现这个 sqlite 明明已经是要 deprecated 了,和很多库都不能联动,文档也对不上。由于新旧同时存在,问 GPT 效果也很差。

    3. 再加之为了单线程性能考虑 sqlite 我需要写成异步,而 redux 操作是同步;而 redux 推荐在状态操作的时候只写状态相关的代码以免出错没有更新状态。这意味着我要么把数据库操作分散在各个组件代码里,要么给 redux 的状态更新再包一层实现所有状态操作和数据库操作。

    4. 更多例子说明我的困境,比如 useContext 的时候变量是引用类型,是值变化就触发组件刷新还是需要引用变化?两个不同的库里都有同名组件,看起来功能也一样我应该用哪个?这种问题对熟悉 react 的人来说或许不是什么问题,但对新手来说一天遇到十几次但找不到「最佳实践」真的是一种灾难。
    kindjeff
        38
    kindjeff  
       2024-08-15 11:52:03 +08:00
    @XCFOX flutter 有的呀,GetX 就是颗粒度可以做到很细的,一个值更新以后对应用到这个值的 Obx 组件就更新了,不会像 react 一样刷新整个函数。
    rocmax
        39
    rocmax  
       2024-08-15 16:32:12 +08:00
    @NewTab12138 “抛开原因不谈,你就说大厂用没用吧?”是这个意思吗?

    小米汽车 app 为了展示 3D 效果就直接干进去 50M 的 unity 包,你跟我说这样体验才是最好的? flutter 有 skia/Impeller 展示不了个 3D 效果,还是 unity 画不了个 UI 界面?这个做法分明就是为了用现成的 API 导入了根本不必要的库。上面 @XCFOX 说得好,flutter 因为有渲染层,所以长处就在复杂动画和游戏。但是真到了游戏领域那肯定还是要用 Unity 。

    跨平台开发无非两个目的:1.共享开发团队 2.共享代码和组件。小厂资源有限采用跨平台方案多是因为第一点,大厂基本上是看中第二点。比如微软以及亚马逊的一众 app 是 web android ios 各平台都有的(甚至 desktop ,不过 Electron 有点拉),用 RN 可以共享很多代码。至于 flutter web 嘛。。。

    微信导入 flutter 的原因网上有说可能是为了小程序。我认为既然已经有团队在维护各平台的 native app ,一般情况没有在其中塞 flutter 的必要性,框架运行也要吃资源的啊,把 app 搞成缝合怪除了刷 kpi 我想不出其他的理由。微信是难用,但是这个锅不该 flutter 背。美团我看了看好像 RN 和 flutter 都在用,可能是像你说的各团队自己决定。至于闲鱼呢只能说给他机会他不中用啊。
    NewTab12138
        40
    NewTab12138  
       2024-08-15 16:49:47 +08:00
    @rocmax 我已经向你证明了,多个大厂都不同程度的使用了 flutter ,你怎么还这么犟,还有 flutter 到底能不能展现 3d 效果,你先去学一下 flutter 吧,我用 flutter 5 年了,国内外从没见过谁能做出媲美 unity 的 3d 效果,不要说媲美了,连十分之一的效果都达不到,flutter 社区都是用 unity 的三方库来实现 3d 效果
    rocmax
        41
    rocmax  
       2024-08-15 20:55:59 +08:00 via Android
    @NewTab12138 有没有一种可能 3d 要求高的 app 可以直接用 unity 开发呢?这种情况下用 flutter 的必要性在哪里?一个 app 里塞两个渲染引擎,一个负责 3d 一个负责 ui 不觉得搞笑吗?
    fox0001
        42
    fox0001  
       2024-08-15 21:25:36 +08:00
    @NewTab12138 #19 算了吧,有些事情、有些人,就没必要较真了。技术只适合应用在适合的地方,不适合争个一二或者吵架。flutter 有那么大厂在用,已经证明了其地位。至于项目用不用,或者用啥,每个项目都有不同的情况。
    rocmax
        43
    rocmax  
       2024-08-15 21:40:24 +08:00
    @fox0001 要局限在 op 的开发场景 Flutter 和 RN 都是 1000%足够用的。这不就是讨论哪里是 flutter 最合适的地方嘛,有理可以说理,没必要抱团取暖吧。

    话说阿里的成功案例是啥呢?或者不局限在阿里,能不能给几个 flutter 开发的 app 的成功案例来参考一下?上面出现的微信,小米汽车,闲鱼实在是没啥说服力。
    jiuzhougege
        44
    jiuzhougege  
       2024-08-15 22:33:20 +08:00
    rn 实在是受不了,模拟器和真机表现不一样的问题,有一些细节上的差异,甚至会影响功能,有些功能模拟器好好的,真机死活不能用或者卡死;(用的 expo )
    flutter 就没有这个包袱了,我得感觉是 flutter app 运行更流畅,相比 RN
    jiuzhougege
        45
    jiuzhougege  
       2024-08-15 22:36:49 +08:00
    @n3r0 大佬开源不?
    sakuraT1
        46
    sakuraT1  
       332 天前
    考虑学之前,先去 BOSS 上搜搜 RN 或者 Flutter 的招聘需求吧
    anan1314git
        47
    anan1314git  
       142 天前
    @rocmax #15 闲鱼明显是失败案例, 首页列表都拉垮的不行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     911 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 19:37 PVG 03:37 LAX 12:37 JFK 15:37
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86