2022 年了, React Native 和 Flutter、uni-app 怎么选? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gongquanlin
V2EX    移动开发

2022 年了, React Native 和 Flutter、uni-app 怎么选?

  •  
  •   gongquanlin 2022-02-06 10:20:22 +08:00 16378 次点击
    这是一个创建于 1342 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近想学一门移动端跨端技术,作为自己技术栈的一个补充,看 v2 上支持 rn 和 flutter 的各一半,但是回答都是 20 年或之前的居多,反对 flutter 的主要原因,主要是 flutter 技术没有这么成熟云云

    现在 2022 年了,flutter 也出了 2 了,因此想看一下广大 v 友对这两门框架的意见?

    介绍下个人情况:在公司主要是写 vue 和 java ,在外写 php+go ,所以也不排斥学新语言(dart)。

    看写法上 flutter 和 RN 都很像,业务上之前请教前端大哥,app 都是 uniapp 一把梭哈,虽然 uniapp 可以,而且看 csdn 的客户端好像也是 uniapp 的?但是还是想搞一把 rn 或者 flutter

    倾向于 rn ,因为会 css ,觉着用 react 写样式也比较快; flutter 主要是嵌套地狱太劝退了,看样式上和 css 好像没有太大区别;

    所以不知道各位 v 友有啥建议没

    39 条回复    2023-01-06 12:11:30 +08:00
    geekrainy
        1
    geekrainy  
       2022-02-06 10:21:23 +08:00 via iPhone   17
    首先排除 uni
    rophie123
        2
    rophie123  
       2022-02-06 10:27:52 +08:00   1
    会 vue 反正我选 uni ,如果为了学习的话可以学学其他的
    7gugu
        3
    7gugu  
       2022-02-06 10:33:00 +08:00 via iPhone
    uniapp
    cnbattle
        4
    cnbattle  
       2022-02-06 10:37:14 +08:00 via Android
    如果你的移动端想包含 h5,各小程序平台,业务不涉及什么底层,信息流为主,选 uniapp 出活快,

    如果玩底层,得玩原生,看个人学习目的和需求,我为了出活 h5 ,小程序,app 都搞,常规业务需求,用 uniapp ,因为之前会 vue ,直接上手,成本极低……楼主参考下,溜了,各位大佬勿喷
    TinyKube
        5
    TinyKube  
       2022-02-06 10:42:59 +08:00 via iPhone
    2 年前 flutter 成熟度确实不如 RN ,现在 RN 生态半死不活,我会选 Flutter
    Chism
        6
    Chism  
       2022-02-06 11:05:38 +08:00
    uniapp 其实就是 webview 包皮,性能上不及 rn 和 flutter ,好处是,它不仅可以编译成 iOS 和安卓,还能直接做成各个平台的小程序以及快应用
    但是 bug 多也是很多开发者诟病的
    如果是面向国内,uniapp 应该问题不大,毕竟大量小公司都在用,1 个程序员同吃所有端,甚至后台(unicloud),美其名曰新全栈
    meteor957
        7
    meteor957  
       2022-02-06 11:37:38 +08:00
    前几年肯定推荐 rn ,现在很难说。
    chotow
        8
    chotow  
       2022-02-06 11:42:28 +08:00 via iPhone
    用 Flutter 写的百度贴吧 iOS 版跟 一样,此外没见过其他写得好的 Flutter 应用,所以非客户端开发的我盲推 RN 。
    IGJacklove
        9
    IGJacklove  
       2022-02-06 11:45:42 +08:00 via iPhone
    个人看好 flutter ,未来前景会更好。
    ktqFDx9m2Bvfq3y4
        10
    ktqFDx9m2Bvfq3y4  
       2022-02-06 11:49:45 +08:00   4
    我就知道没人推 Xamarin ,我在用它。[狗头]
    rabbbit
        11
    rabbbit  
       2022-02-06 11:55:33 +08:00
    学习的话 uni 就算了, 正规点的厂子基本上没有用这玩意的.
    Rrrrrr
        12
    Rrrrrr  
       2022-02-06 11:57:30 +08:00 via iPhone
    Flutter
    Building
        13
    Building  
       2022-02-06 12:04:00 +08:00 via iPhone   2
    单纯学习的话不建议学习这种框架中的任何一种,浪费时间,随便学 Android 或者 iOS 都行,其实大体思路都是一样的,这种框架仅仅适合快速搭建简单的数据展示类应用,稍微复杂一点的应用,原生流畅你可能都保持不好,更别说用这种框架了,做出来的东西根本不能用,再加上没有认真了解过底层运行机制,遇到问题瞬间就搁浅了。
    XCFOX
        14
    XCFOX  
       2022-02-06 13:11:49 +08:00   1
    个人推荐 Flutter

    目前而言 RN 的生态比 Flutter 其实略逊一筹,阿里云腾讯云的很多服务会提供 Flutter 、iOS 、Android 的 SDK 但没有 RN 的 SDK 。Flutter 的开发的移动端应用目前能直接跑在 Web 端上。
    Flutter 坑很多,听说 RN 坑更多。
    《哔哩哔哩漫画》所有页面都是用 Flutter 开发的,流畅度非常不错。
    另外是个人觉得 React 的函数式数据更新思路很奇怪,后来的 vue3 、solidjs 、Flutter 的 GetX 都没有采用 React 的函数式 + Hook 的思路,代码写起来顺畅多了。
    LiuJiang
        15
    LiuJiang  
       2022-02-06 13:21:29 +08:00
    @XCFOX "另外是个人觉得 React 的函数式数据更新思路很奇怪,后来的 vue3 、solidjs 、Flutter 的 GetX 都没有采用 React 的函数式 + Hook 的思路,代码写起来顺畅多了。",React 本身强调的是函数式编程理念,如果把编程思想转换下,或许就不会奇怪了,反而会深度认同
    makelove
        16
    makelove  
       2022-02-06 13:32:49 +08:00
    @LiuJiang react 怎么就强调函数式了,那 solid 和 react api 很类似是不是也算函数式
    WenhaoWu
        17
    WenhaoWu  
       2022-02-06 14:58:02 +08:00 via iPhone
    全职写 flutter 两年了,不后悔
    wingkwanli888
        18
    wingkwanli888  
       2022-02-06 15:07:45 +08:00
    flutter 吧, react native 在的生不行了
    hxse
        19
    hxse  
       2022-02-06 15:23:46 +08:00   2
    同样很难接受 flutter 官方那种冗长难明的写法, 尝试找了一个下社区方案, 看看有没有什么简洁优雅的写法, 还是有的

    函数式组件的写法:
    https://pub.dev/packages/functional_widget
    hooks 的写法:
    https://pub.dev/packages/flutter_hooks
    状态管理库:
    https://pub.dev/packages/hooks_riverpod
    灵感来自 Tailwindcss 和 SwiftUI 的 i 框架:
    https://pub.dev/packages/velocity_x
    简化嵌套的语法:
    https://pub.dev/packages/nested
    Shook
        20
    Shook  
       2022-02-06 15:26:24 +08:00
    公司业务原因,flutter 和 uniapp 都有写,我个人觉得都值得学习。
    如果实在只能学一样,我推荐 flutter ,因为它类型完备、调试方便。
    Bijiabo
        21
    Bijiabo  
       2022-02-06 15:47:50 +08:00
    首先排除 uni 和 Flutter ,然后...似乎没得选了
    Yother
        22
    Yother  
       2022-02-06 16:03:25 +08:00 via Android
    稳稳的 Flutter 。
    kwanzaa
        23
    kwanzaa  
       2022-02-06 17:32:04 +08:00
    你得先学客户端再去考虑“一门移动端跨端技术”。作为 web 前端跳过来算是跳坑了。
    Cbdy
        24
    Cbdy  
       2022-02-06 18:39:42 +08:00
    技术选型有一个小妙招:就是选择这个领域用的人最多的,社区最活跃的,有个好爸爸的
    yazinnnn
        25
    yazinnnn  
       2022-02-06 18:41:35 +08:00
    可选 kotlin+compose
    9ki
        26
    9ki  
       2022-02-06 20:00:58 +08:00
    不要相信楼上的 Flutter Web, 这玩意就是个天坑, 体积巨大, 性能巨差, 不知道是怎么作为正式功能被推出的.
    a570295535
        27
    a570295535  
       2022-02-06 20:49:30 +08:00
    flutter 开发的 app ,
    安卓手机大多滑动页面卡顿掉帧,不够流畅,体验比较难受。
    3dwelcome
        28
    3dwelcome  
       2022-02-06 22:00:13 +08:00
    @9ki 用 flutter 都是大多客户端 native 转过来的,主攻客户端技术,他们不在乎 web 性能。

    在乎 web 性能的,那就是 React/VUE 那套,可选择移动框架很多了,又何必选个新语言为难自己。
    Removable
        29
    Removable  
       2022-02-07 09:25:44 +08:00 via iPhone
    看了各位的回复,感觉答案依旧不统一啊
    reallittoma
        30
    reallittoma  
       2022-02-07 09:48:09 +08:00
    @Chad0000 #10 有公司在用 Xamarin 做开发吗?找了一圈求职网站都没看到几个。我只在个人项目里用它……
    LewisW
        31
    LewisW  
       2022-02-07 09:52:09 +08:00
    如果你想学移动端技术的话 我觉得学 android 或者 iOS 原生开发会好点
    i979491586
        32
    i979491586  
       2022-02-07 10:28:44 +08:00
    2022 年推荐 flutter ,说 flutter 嵌套地狱的,估计写其他前端代码也跟屎似的。
    说 flutter 卡的 自己先写一个去试试 release 模式,再来云
    gongquanlin
        33
    gongquanlin  
    OP
       2022-02-07 10:57:12 +08:00
    感谢各位朋友的支持回复! rn 和 flutter 这两天我抽空都装上了,简单写了几个 demo ,就目前问题简单说一下我的想法:
    react natvie:因为我本身也做前端,所以上手很快,有现成的组件库( ant design mobile ),样式也都是 css 的语法,写起来没有啥问题

    flutter:因为本身 dart 是新语言,但是语法糖看着还算简单,上手也很快,嵌套的问题在 vscode 里面编辑器会自动加注释,相对来说还好一些,主要的问题是组件不熟悉,样式不熟悉,全都需要重新学,因此写起来可能门槛高一点

    flutter 的样式写起来确实不如 css/scss 方便,可能也和个人习惯有关,flutter 本身写样式的方式,个人感觉和 compose 挺像,本质上就是调用函数。
    样式写起来不方便,看了一下可能和 flutter 的渲染方式有关,需要先转 element 再转 rederObject 最后渲染 layer 。

    不过有失必有得,这样万物基于 widget ,性能上进行优化确实比 css 可能方便一些?个人拙见

    我因为只是写了个 hello,world ,目前正在研究两者的路由、网络、样式等功能,然后再给大家个回复吧!
    ktqFDx9m2Bvfq3y4
        34
    ktqFDx9m2Bvfq3y4  
       2022-02-07 12:52:58 +08:00 via iPhone
    @reallittoma #30 我们这边做 APP 的比较少,我也是在自己的项目中使用。
    LiuJiang
        35
    LiuJiang  
       2022-02-08 17:03:36 +08:00
    @makelove hooks 组件
    jk0001688
        36
    jk0001688  
       2022-02-17 22:46:58 +08:00 via Android
    rn 吧,会 react 无脑写 app
    moosoul
        37
    moosoul  
       2022-02-26 16:20:21 +08:00   8
    UniApp
    这个先放弃吧,写小程序还不错,已经用 uniapp 上架了两款小程序(长期运营维护,但是编辑器还是 bug 比较多,主要是跟 HBuilderX 的一个 hot reload 有关,但是不是啥大问题,大不了重新编译一次)

    Flutter 2.0
    已上架两款应用。一款简单,一款复杂。都是社交类应用(三方服务采用的腾讯云的 IM ,现阶段 3.5 版本之后的 IM 的 flutter 插件还不错,以前的很坑)
    然后复杂应用中有一款涉及到,IM 、富文本编辑、相机、录音、实时音视频。这个时候就能发现 flutter 的各种坑了。(如果你愿意花时间折腾那可以用)
    目前坑点稍微说一下
    1. Google Flutter Plugin 中的 Camera 、Video Player 的问题,前者旋转拍照的支持有问题,0.2 版本的 bug 如今 0.9 了还未修复,后者对旋转的视频的方向支持有问题,也是 0.1,0.2 版本的问题现在 2.0 以后了还未解决。
    2. 富文本编辑器使用的 flutter quill,这个库还不错基于 flutter 的 skia 那套自己完全重绘,性能和效率还不错,但是功能性上面相对于成熟的富文本编辑器缺失太多,编辑器的基础的输入,换行,样式各种都有不少问题,因目前还比较基础很多 API 封装的不够彻底,经常有需要自己手动修改编辑器的 meta data 的情况
    3. Flutter 自身,语言上是 Dart 这个没啥好评价的,多学一门语言而已,大多数程序员都没有压力。但是 UI 构建的方式基于 Widget 的,这个 Widget 看似很完美,当你应用内自定义的内容较多的时候,你就会发现,万物不是 Widget 了,万物都是 Container ,基本组件都是自己基于 Container 去修改。看了很多文章都说 Flutter 通过 Skia 自绘了一套 UI ,保证了 Android 和 iOS 的一致性,真希望这些作者拿 Flutter 去写一个实际项目,这个一致性真的没啥用,大多数都还是需要你自定义(这个时候我就很怀念 React Native 了,反正也可以 div 一把梭啊)
    4. 三方插件上,大多数插件也是需要自定义的,我列一下我自定义的 pub 的插件
    google_plugins (主要是修改上面说的两个插件的 bug )
    flutter_wechat_camera_picker (如上,内部采用的以上两个插件)
    sliding_up_panel (有一个容器高度的 bug )
    ai_barcode (需要自定义扫描线的风格)
    flutter_quill (需要解决一些编辑 bug ,以及自定义一些 Style )


    React Native 0.59
    已上架 2 款以上应用。
    缺点还是性能问题,但是大多数基础项目,我做了这么多款项目还真没碰到性能说跟 Flutter 差距很多的地方。
    再个长时间没接触 React Native 了更多的就不评价了。


    以上对比下来
    Flutter == ReactNative >>>>>>> UniApp(做 App 用这个就是坑自己)

    我看 RN 更新了 0.69 版本据说在原生交互方便加入了 JNI,可以直接调用原生不像以前是采用类似 json 数据通讯的方式,我准备再回归 RN 试试了。
    如果内心不够强大,项目又够复杂真的不建议 Flutter ,需要原生处理的多出你的想想。
    其实如果做到复杂项目上,Flutter 和 RN 真的 55 开,都需要你有不错的原生基础。

    最后说一下我想回归 RN 的原因
    1. JS/TS ,日常是 Nodejs 全栈,也会些一下 React 项目,语言上更熟悉。
    2. Flutter 当前主版本还算比较稳定,但是三方库一言难尽,并且样式相关的很多官方自己都没有一套很好的自定义方案,那三方库更不可能支持的有多好,大多数三方库最后为了改一些样式只能拉下来自己改库了。

    至于大家最终选用什么样的框架看是看需求吧,考虑性能直接原生,不考虑性能的简单项目除了 uniapp 任选,复杂项目如果本身也是 js/ts 那就 RN
    caoyanglee
        38
    caoyanglee  
       2022-08-12 01:52:17 +08:00
    已经上架 2 款 Flutter 应用, [记得倒数日] [榴莲日记] 可以参考一下~
    cnuser002
        39
    cnuser002  
       2023-01-06 12:11:30 +08:00
    Flutter 的跨平台思路很大胆激进,是彻底的另起炉灶。
    而 React 本质还是基于 JS 的一套妥协的玩法,发展潜力不大了。
    从战未来的角度,Flutter 或许更值得研究。

    但跨平台的本质并无不同。统一界面代码,调用平台原生功能。
    选对的不如选会的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     879 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:38 PVG 04:38 LAX 13:38 JFK 16:38
    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