快 2021 年了,最值得推荐的 APP 跨端框架 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
riccox
V2EX    程序员

快 2021 年了,最值得推荐的 APP 跨端框架

  •  
  •   riccox
    riccox 2020-12-05 12:47:47 +08:00 11411 次点击
    这是一个创建于 1770 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT,从生态、性能、开发体验,以及未来发展等方面看,最值得推荐的 APP 跨端开发是哪款

    希望 V 友们多多推荐讨论,个人比较看重性能与开发体验

    ReactNative,flutter,uniapp......

    这几款应该是目前市面上用的比较多的

    67 条回复    2020-12-07 20:44:16 +08:00
    wszgrcy
        1
    wszgrcy  
       2020-12-05 12:52:36 +08:00 via Android
    typescript native
    Quarter
        2
    Quarter  
       2020-12-05 13:19:30 +08:00
    我选择的是 flutter,但是没用过其它的形式,就不作评价了
    streamrx
        3
    streamrx  
       2020-12-05 13:20:48 +08:00 via iPhone
    uniapp 不用考虑了 这个东西现在基本都是用来做微信小程序的
    XCFOX
        4
    XCFOX  
       2020-12-05 13:36:20 +08:00
    占楼同问
    个人还是比较看好 RN 。React 一直在理念上领先其他框架,比如组件化、状态、Hooks 、jsx 。Flutter 和 vue 一直是摸着 React 过河。RN 还能配合 TypeScript,Dart 写起来感觉怪怪的。
    riccox
        5
    riccox  
    OP
       2020-12-05 13:37:25 +08:00
    @wszgrcy #1 RN+ts ?
    riccox
        6
    riccox  
    OP
       2020-12-05 13:39:50 +08:00
    @Quarter #2 dart 好用吗,网络上评论看起来前景不是很确定
    lagoon
        7
    lagoon  
       2020-12-05 13:39:56 +08:00
    相较之下,Flutter 好些。

    话说,看看它们各自的实现原理就能有一些感受了。

    用网友的评论:Flutter ?烂,太烂了。但 Skia 优秀啊。
    SnailLin
        8
    SnailLin  
       2020-12-05 13:40:30 +08:00
    flutter
    riccox
        9
    riccox  
    OP
       2020-12-05 13:40:34 +08:00
    @streamrx #3 同意,用过 uniapp,做 app 很容易出现性能问题
    riccox
        10
    riccox  
    OP
       2020-12-05 13:43:18 +08:00
    @XCFOX #4 +1 个人也是比较看好 RN
    lagoon
        11
    lagoon  
       2020-12-05 13:47:28 +08:00   1
    @XCFOX 同觉得 React 的理念好,大家都在学习它。
    但觉得 React Native 的理念不好。
    lagoon
        12
    lagoon  
       2020-12-05 13:53:51 +08:00
    个人觉得,对于跨平台的技术,重点是在,怎么回到原生上。

    用前端技术写个 h5 不好吗?不是 h5 不好,而是回到原生的方式上不好(浏览器)。
    paradoxs
        13
    paradoxs  
       2020-12-05 13:57:48 +08:00
    有没有哪位大侠知道 Evernote for iOS 现在用的是什么垃圾技术? 搞的整个 APP 卡的一逼。
    Quarter
        14
    Quarter  
       2020-12-05 14:33:09 +08:00 via iPhone
    @lrvinye dart 还可以,挺容易上手的,但是我觉得这种嵌套式的写法还是和标签一样,多了以后会显得比较乱,但整体使用起来我觉得还不错
    lloovve
        15
    lloovve  
       2020-12-05 14:38:53 +08:00 via iPhone
    Delphi
    chenhui7373
        16
    chenhui7373  
       2020-12-05 14:41:55 +08:00
    pyqt
    riccox
        17
    riccox  
    OP
       2020-12-05 14:51:08 +08:00
    @chenhui7373 #16 这是桌面端吧
    conkke
        18
    conkke  
       2020-12-05 14:53:38 +08:00
    RN +1
    whypool
        19
    whypool  
       2020-12-05 15:05:46 +08:00 via Android
    小程序,其他都是渣渣
    chenhui7373
        20
    chenhui7373  
       2020-12-05 15:08:40 +08:00
    @lrvinye qt for android ,qt for ios
    icyalala
        21
    icyalala  
       2020-12-05 15:12:51 +08:00   6
    就国内这个现状,想省人力做跨端就写小程序,想体验优秀就用 Native 。
    RN Flutter 基本都是大公司做 KPI 或者个人小项目用的。
    love
        22
    love  
       2020-12-05 15:25:45 +08:00
    首先排除 flutter
    IGJacklove
        23
    IGJacklove  
       2020-12-05 16:27:22 +08:00 via Android   1
    @XCFOX flutter 摸着 react 过河就过分了吧,rn 不过是披着前端的皮而已,骨子和前端没半毛钱关系。两个都写过,语法确实是 rn 加 ts 舒服,但开发体验 flutter 完爆 rn 吧,写 rn 写个效果第一想法是 rn 行不行,写 flutter 第一想法是你行不行。rn 可玩度和操作上限都不如 flutter,别说 flutter 还能跨 PC 和 Web 了
    9ki
        24
    9ki  
       2020-12-05 16:33:15 +08:00   1
    目前我心中比较满意的跨端选型是 H5(也就是网页,React/Vue/Angular) + 小程序(Taro/原生小程序) + Native(React Native),弱化视图层的开发模式下很容易把代码积累下来移植到其他端。

    flutter 没用过不评价
    考虑性能就和 uniapp 没关系了(本身也不推荐,坑太多)
    Helsing
        25
    Helsing  
       2020-12-05 17:02:13 +08:00 via iPhone
    @icyalala #21
    有道理。国内现在好像就咸鱼和百度贴吧是用 Flutter 做的
    matatabi
        26
    matatabi  
       2020-12-05 17:41:42 +08:00
    flutter yes
    kazeik
        27
    kazeik  
       2020-12-05 18:21:16 +08:00 via iPhone
    flutter
    vxinv
        28
    vxinv  
       2020-12-05 18:45:20 +08:00
    @Helsing 百度贴吧 是吗?
    Helsing
        30
    Helsing  
       2020-12-05 19:08:17 +08:00 via iPhone
    @moneyloveme8866 #28
    应该是的,之前贴吧有一个版本有 bug,“我的”页面刷新不出来,把 Flutter 的一些错误信息显示出来了
    riccox
        31
    riccox  
    OP
       2020-12-05 19:10:15 +08:00
    @yimity #29 为啥,分享一下
    murmur
        32
    murmur  
       2020-12-05 19:22:51 +08:00
    目前看还是微信小程序,因为比微信小程序需求和性能要求高的,或者想自立门户的,最后都要拥抱 native
    cnbattle
        33
    cnbattle  
       2020-12-05 19:25:12 +08:00 via Android
    公司在用 uniapp…有点慌
    yimity
        34
    yimity  
       2020-12-05 19:26:56 +08:00
    @lrvinye
    当然了,可能主要是我的问题。
    不是很熟悉或者习惯 RN 那一套开发思想,每次写完一个页面 /组件,都要反复看好几遍代码,才能将这个执行流程理顺。而且总是会渲染很多次,虽然有自己的 diff,并没有真正渲染。
    尤其是 hooks,少个依赖多个依赖,很容易出问题。
    但是 Flutter 我就顺着写就行了。没有很多小点要去注意。

    按我自己的理解的执行思路就是写就行。不用老是跳。
    riccox
        35
    riccox  
    OP
       2020-12-05 19:27:58 +08:00
    @cnbattle #33 小程序用 uniapp 还不错
    Bijiabo
        36
    Bijiabo  
       2020-12-05 19:31:54 +08:00
    个人推荐 React Native + TypeScript
    遇到真正需要高性能和体验要求的页面可以方便的集成 Native View,且支持在线加载。
    Helsing
        37
    Helsing  
       2020-12-05 19:40:03 +08:00 via iPhone
    @moneyloveme8866 #28
    刚刚看了一下,应该是我记错了,百度做了一个贴吧内部版才是用 Flutter 做的,比较简陋,但是没有广告和那些花里胡哨的功能
    653513754
        38
    653513754  
       2020-12-05 19:40:46 +08:00 via iPhone
    所有的跨平台都是坑,没有例外
    zybook
        39
    zybook  
       2020-12-05 21:47:31 +08:00 via Android   1
    怎么没人说 quasar
    WebKit
        40
    WebKit  
       2020-12-05 21:57:40 +08:00 via Android
    @XCFOX flutter 跟 RN 区别很大
    xi_lin
        41
    xi_lin  
       2020-12-05 22:14:28 +08:00
    @yimity 你说的这不算 rn 的缺陷。。
    queuey
        42
    queuey  
       2020-12-05 22:25:10 +08:00
    Flutter yes ~
    buffzty
        43
    buffzty  
       2020-12-05 22:54:48 +08:00   1
    只用过 RN
    生态: 全,想要的组件基本都有
    性能: 接近原生,那些说性能不行的不是在装逼就是根本没用过.现在的 app 基本都带一大堆的 webview. 而且很多大 app 都是 rn 开发的 我做过好几个 zheng 府的 app 都是用 rn 开发.
    开发体验: 对 typescript 支持极好 你说好不好
    未来发展: 看官方 github 提交记录就有数了
    CommandZi
        44
    CommandZi  
       2020-12-05 23:38:53 +08:00
    用 flutter 写了一个小工具,感受就是除非以后工作需要,大概不会再碰了。
    嵌套嵌套还是嵌套,在一个普通 view 上加点击事件要嵌套一层,监听数据要嵌套一层,布局也要嵌套 N 层,如果是有 UI 定好一次过开发还好,如果 UI 变化多,改着改着就晕了
    默认单线程应用,App 性能看开发者功力,如果想开发多线程任务则意味更多模版代码
    flutter 我感觉就是单向数据流的设计思想,这意味着更多的模版代码
    OHyn
        45
    OHyn  
       2020-12-06 01:07:34 +08:00
    RN 很不错!
    zachlhb
        46
    zachlhb  
       2020-12-06 01:55:18 +08:00 via Android
    xamarin
    john6lq
        47
    john6lq  
       2020-12-06 02:33:45 +08:00 via iPhone
    首先 flutter 性能最好,因为跳过了原生框架。
    其次写起来嵌套确实操蛋,但是他背后团队牛,支持定制很多东西。
    再次 flutter 依赖库很好,很多,但由于跨平台,很多硬件或者底层开发相关的只能依赖开源库,后期假如库出问题可能开发也进行不下去。
    再再次就是包大小比较大,调试的时候热重载虽然方便但是对机器性能要求比较高。
    thautwarm
        48
    thautwarm  
       2020-12-06 03:38:14 +08:00 via Android
    FSharp Fabulous
    9LCRwvU14033RHJo
        49
    9LCRwvU14033RHJo  
       2020-12-06 05:06:47 +08:00
    @lagoon 两者的理念主要不同在哪?
    hoyixi
        50
    hoyixi  
       2020-12-06 08:16:10 +08:00
    Flutter 的 Web 端理论上可以,但是感觉还只是个玩具
    Cyanhall
        51
    Cyanhall  
       2020-12-06 08:52:33 +08:00   2
    从 Github 星星数提供一个统计参考:

    最流行的跨平台框架: https://www.cyanhall.com/cn/top/cross-platform-framework/
    zjgsamuel
        52
    zjgsamuel  
       2020-12-06 09:45:20 +08:00
    @lloovve #15 Delphi 那么厉害了~ 不过 3 年前,帮我们用 Delphi 写 ERP 的那帮人,也搞出了手机端的 APP,用于仓库收发货,机械设备点检这些功能,APP 我试运行过,界面和运行只能说能用,有些黑屏和卡顿,那会 IDE 版本好像是 RAD Studio 10 多少来着....
    Lemeng
        53
    Lemeng  
       2020-12-06 10:07:54 +08:00
    小程序就是不错的选择,省时省力
    WebKit
        54
    WebKit  
       2020-12-06 10:38:00 +08:00 via Android
    @hoyixi Flutter web 现在还很卡,在 chrome 傻子有时候卡的不行
    WebKit
        55
    WebKit  
       2020-12-06 10:40:25 +08:00 via Android
    @CommandZi 明显是你写法有问题。写代码都知道封装,写 UI 就不知道了?
    chenhui7373
        56
    chenhui7373  
       2020-12-06 10:44:53 +08:00
    APP

    c/c++ lib => bindings => swift/oc => platform channel => dart
    ___________________________or => jsbridge => RN
    c/c++ lib => jni => java/kotlin => platform channel => dart
    ___________________________or => jsbridge => RN

    小程序
    uniapp

    H5
    JAMStack SSG(静态网站生成器)
    mxT52CRuqR6o5
        57
    mxT52CRuqR6o5  
       2020-12-06 10:45:30 +08:00
    rn 总的来说更成熟些,但涉及手势动画是开发会很蛋疼,相比之下 flutter 如果有这种需求开发体验会更加接近 native
    另外如果要跨 web 端就不是很推荐 flutter
    其实我更推荐 hybrid/h5 套壳,开发成本和体验都很好,就是安卓用户体验差一丢丢
    zhuzhibin
        58
    zhuzhibin  
       2020-12-06 11:43:07 +08:00 via iPhone
    Taro RN 是说支持 taro 3 但是我觉得坑还是很多 如果我是一个开发者 选择了某个跨端方案 最起码我是期望可以跟着文档可以顺利写一段代码且顺利跑起来多端 这样心里踏实些 但是 taro Rn 之前我跑过骨架 跑不起来 提了 issue 也没人解决 也没有一个直观的例子 这个当然不能怪谁 说来说去我觉得 RN 端还是得先有原生 RN 的基础以及概念 不然就像我一样 出了问题都排查不出哈哈
    wuzhanggui
        59
    wuzhanggui  
       2020-12-06 11:53:49 +08:00
    uniapp 写个小程序就行了,app 啥的真的不行
    pC0oc4EbCSsJUy4W
        60
    pC0oc4EbCSsJUy4W  
       2020-12-06 12:54:12 +08:00
    百度贴吧闲鱼用 Flutter,但是体验并不好,尤其是闲鱼
    pC0oc4EbCSsJUy4W
        61
    pC0oc4EbCSsJUy4W  
       2020-12-06 12:55:29 +08:00
    计算 Flutter 开发,也是原生熟悉开发坑才少,要不然出了问题抓瞎
    pC0oc4EbCSsJUy4W
        62
    pC0oc4EbCSsJUy4W  
       2020-12-06 12:57:15 +08:00
    Android 下一个软件 LibChecker,然后就知道软件构架了,基本都是部分使用 RN 或者 Flutter

    Android Kotlin 才是主流
    pC0oc4EbCSsJUy4W
        63
    pC0oc4EbCSsJUy4W  
       2020-12-06 12:58:01 +08:00
    当然还有 Xamarin 的
    wezzard
        64
    wezzard  
       2020-12-06 14:09:21 +08:00
    SwiftUI
    ccraohng
        65
    ccraohng  
       2020-12-07 09:33:42 +08:00 via iPhone
    rn 手势动画有 worklet +native gesture
    simon527
        66
    simon527  
       2020-12-07 13:30:43 +08:00
    用 uniapp 一年多了,一路坑来,逐渐习惯。
    riccox
        67
    riccox  
    OP
       2020-12-07 20:44:16 +08:00 via iPhone
    @simon527 uniapp 写起来别的确实还行,就是性能确实有瓶颈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2354 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 15:48 PVG 23:48 LAX 08:48 JFK 11:48
    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