V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
weiwenhao
V2EX  ›  前端开发

2024 年 rn 和 flutter 怎么选

  •  1
     
  •   weiwenhao ·
    weiwenhao · 100 天前 · 3215 次点击
    这是一个创建于 100 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    rn 生态混乱,expo 和裸 rn 库乱成一锅粥; react 不符合(我的)直觉的地方超多;最佳实践少,网上教程基本上能把东西糊出来就完事。
    XCFOX
        5
    XCFOX  
       100 天前   ❤️ 15
    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
       100 天前
    @XCFOX 感谢回答,本来已经打算 flutter 了,现在又要考虑一把了。
    GooMS
        7
    GooMS  
       100 天前 via Android
    Rn 那几个老问题一直都在挂着
    rocmax
        8
    rocmax  
       100 天前
    who is using react native:
    https://reactnative.dev/showcase

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

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

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

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

    https://z.article.cool/
    NewTab12138
        32
    NewTab12138  
       100 天前
    @rocmax 首先你说的是似乎除了 Google 自家以外好像也没太多大厂在用。。。
    没有大厂在用吗,国内大厂在用的太多了。
    其次大量使用的问题,像微信,企业微信开发 n 年,不可能大量使用 flutter ,但是像美团商家版这些 app ,很多模块基本都是 flutter 开发的,大厂 n 个 app ,每个团队技术栈都不一样,选择也不同。
    至于小米汽车使用 unity ,app 想要展示 3d 车机这种效果,肯定得上 unity ,这样体验才是最好的。至于 app 好不好用,天天网上那么多人还说微信难用。
    minoic
        33
    minoic  
       100 天前
    @Mcx 高刷新率应该得用外部库设置一下 https://pub.dev/packages/flutter_displaymode
    ala2008
        34
    ala2008  
       100 天前
    简单的,uniapp 也是不错的选择,还可以直接发小程序
    leegoo
        35
    leegoo  
       100 天前
    你是做过 java 的,因为 flutter 是用 dart 语言写的,你可以对比一下 dart 语法,你会发现语法很相似。
    什么性能、刷新率这些我觉得都是没必要个人开发者需要关心的。
    tanranran
        36
    tanranran  
       100 天前
    @zy0829 flutter 都能满足
    kindjeff
        37
    kindjeff  
       100 天前
    叠个甲,下面都是我作为一个后端开发,对 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  
       100 天前
    @XCFOX flutter 有的呀,GetX 就是颗粒度可以做到很细的,一个值更新以后对应用到这个值的 Obx 组件就更新了,不会像 react 一样刷新整个函数。
    rocmax
        39
    rocmax  
       100 天前
    @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  
       100 天前
    @rocmax 我已经向你证明了,多个大厂都不同程度的使用了 flutter ,你怎么还这么犟,还有 flutter 到底能不能展现 3d 效果,你先去学一下 flutter 吧,我用 flutter 5 年了,国内外从没见过谁能做出媲美 unity 的 3d 效果,不要说媲美了,连十分之一的效果都达不到,flutter 社区都是用 unity 的三方库来实现 3d 效果
    rocmax
        41
    rocmax  
       99 天前 via Android
    @NewTab12138 有没有一种可能 3d 要求高的 app 可以直接用 unity 开发呢?这种情况下用 flutter 的必要性在哪里?一个 app 里塞两个渲染引擎,一个负责 3d 一个负责 ui 不觉得搞笑吗?
    fox0001
        42
    fox0001  
       99 天前
    @NewTab12138 #19 算了吧,有些事情、有些人,就没必要较真了。技术只适合应用在适合的地方,不适合争个一二或者吵架。flutter 有那么大厂在用,已经证明了其地位。至于项目用不用,或者用啥,每个项目都有不同的情况。
    rocmax
        43
    rocmax  
       99 天前
    @fox0001 要局限在 op 的开发场景 Flutter 和 RN 都是 1000%足够用的。这不就是讨论哪里是 flutter 最合适的地方嘛,有理可以说理,没必要抱团取暖吧。

    话说阿里的成功案例是啥呢?或者不局限在阿里,能不能给几个 flutter 开发的 app 的成功案例来参考一下?上面出现的微信,小米汽车,闲鱼实在是没啥说服力。
    jiuzhougege
        44
    jiuzhougege  
       99 天前
    rn 实在是受不了,模拟器和真机表现不一样的问题,有一些细节上的差异,甚至会影响功能,有些功能模拟器好好的,真机死活不能用或者卡死;(用的 expo )
    flutter 就没有这个包袱了,我得感觉是 flutter app 运行更流畅,相比 RN
    jiuzhougege
        45
    jiuzhougege  
       99 天前
    @n3r0 大佬开源不?
    a2956853935
        46
    a2956853935  
       12 天前
    考虑学之前,先去 BOSS 上搜搜 RN 或者 Flutter 的招聘需求吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2729 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:00 · PVG 18:00 · LAX 02:00 · JFK 05:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.