跨平台开发, RN、Flutter、Weex、uni-app 该如何取舍? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
iOS 开发实用技术导航
NSHipster 中文版
http://nshipster.cn/
cocos2d 开源 2D 游戏引擎
http://www.cocos2d-iphone.org/
CocoaPods
http://cocoapods.org/
Google Analytics for Mobile 统计解决方案
http://code.google.com/mobile/analytics/
WWDC
https://developer.apple.com/wwdc/
Design Guides and Resources
https://developer.apple.com/design/
Transcripts of WWDC sessions
http://asciiwwdc.com
Cocoa with Love
http://cocoawithlove.com/
Cocoa Dev Central
http://cocoadevcentral.com/
NSHipster
http://nshipster.com/
Style Guides
Google Objective-C Style Guide
NYTimes Objective-C Style Guide
Useful Tools and Services
Charles Web Debugging Proxy
Smore
darkninght
V2EX    iDev

跨平台开发, RN、Flutter、Weex、uni-app 该如何取舍?

  •  
  •   darkninght 2019-10-25 15:01:13 +08:00 31283 次点击
    这是一个创建于 2233 天前的主题,其中的信息可能已经有所发展或是发生改变。

    iOS 互联网民工一枚,想学习点跨平台开发,寻求下突破,大佬们觉得标题里几个方案哪个更适合学? 目前我更加倾向 uni-app,但是对 flutter 也抱有一些期待。

    第 1 条附言    2019-10-25 15:47:21 +08:00
    sorry、我之前没有阐释清楚,其实我也想着借跨平台开发多学习点大前端的知识。
    另外,没有最好的技术,只有适合的方案。不希望这篇帖子会引起任何喜欢某一种跨平台方案的同学的不适,也希望大家理性交流。
    77 条回复    2020-11-14 10:55:31 +08:00
    andj4cn
        1
    andj4cn  
       2019-10-25 15:05:30 +08:00
    Flutter 还处在尝鲜的阶段吧,不过阿里有闲鱼实践上了,dart 语言又是一个学习成本。RN 相对成熟,可以开搞
    murmur
        2
    murmur  
       2019-10-25 15:05:48 +08:00
    为啥不继续学 iOS 底层高阶开发,你底层牛逼了到时候用 RN、Flutter、Weex 的还得排队求你帮忙填坑
    跨平台永远是个梦
    darkninght
        3
    darkninght  
    OP
       2019-10-25 15:07:51 +08:00
    @murmur 没说不继续学习 iOS 啊,我的主业就是 iOS 这个丢不掉的。技术的扩充肯定不能只是纵向的啊,还是要有横向发展的。
    darkninght
        4
    darkninght  
    OP
       2019-10-25 15:09:27 +08:00
    @andj4cn flutter 确实坑还很多,而且代码写出来太难看了。RN 我打算观望一下,等 facebook 再重构下
    1OF7G
        5
    1OF7G  
       2019-10-25 15:11:47 +08:00
    Weex、uni-app 和以忽略。RN 现状好一点,不过未来发展还是看好 Flutter。
    paradoxs
        6
    paradoxs  
       2019-10-25 15:12:27 +08:00
    @murmur iOS 的岗位为啥越来越少了。。。 我在拉勾上面看,真的,一天比一天少。 深圳, 去年这个时候好像是接近 400 个的。。
    murmur
        7
    murmur  
       2019-10-25 15:17:14 +08:00
    @paradoxs iOS 外面没足够多的流动人才,靠谱的内推都解决了,现在的架构划分对 native 要求越来越高
    @darkninght 你确定你现在够深入么,有考虑过逆向工程发展么
    Desiree
        8
    Desiree  
       2019-10-25 15:19:05 +08:00   1
    RN 吧,RN 都摸爬滚打了这么多年了,应该大多数坑都有先驱者,而且生态社区比较大,也不怕踩坑
    lagoon
        9
    lagoon  
       2019-10-25 15:19:40 +08:00
    实际上,大陆市面上 RN 多。(主要是比 Flutter 早)
    但个人觉得 Flutter 明显比 RN 好。
    虽然没有实际写过上线项目,但写过个人 app。
    不知道 RN 后来是否改善,但当初,光它的实现方式,性能就是大问题。
    paradoxs
        10
    paradoxs  
       2019-10-25 15:19:57 +08:00
    @murmur 其实严重的问题是,很多人技术虽然好,但是市场和需求,并不需要那么好的技术。

    甚至。。。。。。很多公司根本不需要 APP, 直接微信小程序就解决了。
    Hanggi
        11
    Hanggi  
       2019-10-25 15:25:07 +08:00
    @darkninght 这个真没什么好纠结的,肯定是 Flutter。Flutter 坑是多,但是目前应该影响不到你做一个完整的 APP。代码写出来难看是你的问题,可以找一些开源项目看一下怎么组织代码。RN 感觉都不用考虑了。
    darkninght
        12
    darkninght  
    OP
       2019-10-25 15:41:09 +08:00
    @Hanggi 老哥,flutter 代码难看是公认的,有必要人身攻击?我在上文没有阐释清楚,其实我也想着借此接触一些前端的东西,所以还是最倾向于 uni-app
    darkninght
        13
    darkninght  
    OP
       2019-10-25 15:43:09 +08:00
    @murmur 哈哈哈你是神仙吗?我刚刚备好了个越狱的 iphone5 想着有时间尝试下逆向
    hikarugo
        14
    hikarugo  
       2019-10-25 15:43:47 +08:00
    @darkninght 又被公认了吗。。。。我觉得不难看啊
    lk920724
        15
    lk920724  
       2019-10-25 15:45:43 +08:00
    在用 ionic 学习 Flutter
    darkninght
        16
    darkninght  
    OP
       2019-10-25 15:48:37 +08:00
    @fyxtc 不是被公知啊,写过点 flutter 代码,发现构建 UI 时全是箭头代码,感觉维护起来有点难受
    Sniper416
        17
    Sniper416  
       2019-10-25 15:51:20 +08:00
    uniapp 真香,不过文档真心差。
    lloydsheng
        18
    lloydsheng  
       2019-10-25 15:53:11 +08:00
    RN 0.6x 优化了很多,值得搞搞
    dioxide
        19
    dioxide  
       2019-10-25 15:54:21 +08:00
    Flutter 的生态仍不是太行, 感觉后劲不足.
    RN 要用好的前提是, ios 和 android 原生端要先精通.
    tanranran
        20
    tanranran  
       2019-10-25 15:54:35 +08:00
    如果有小程序 并且项目不复杂(没有音视频 地图 各种对于性能要求很高的) [ uni-app] (里面有个 nvue 就是基于 Weex 的)

    如果没有 [Flutter]
    17681880207
        21
    17681880207  
       2019-10-25 15:54:37 +08:00
    这玩意还得看爹。
    Flutter 和 RN 随便学一个都可以。毕竟 2 个爹都挺靠谱,而且挺有钱的。
    weex 和 uni-app 有兴趣看下,但是实际上市场太小了。
    KuroNekoFan
        22
    KuroNekoFan  
       2019-10-25 16:15:14 +08:00
    我只提醒一下,google 对于无法带来收益的产品是说砍就砍的
    neverfall
        23
    neverfall  
       2019-10-25 16:15:56 +08:00
    继续学习前端的东西有点重复了,不如学个后端技能
    Hanggi
        24
    Hanggi  
       2019-10-25 16:26:25 +08:00
    @darkninght 我没有攻击你,我一开始也是一个 Widget 嵌套 1 万层,难看的要死。但其实都可以模块化分出来,抽象整理。
    Leonard
        25
    Leonard  
       2019-10-25 16:32:58 +08:00
    学 Java 吧
    wobuhuicode
        26
    wobuhuicode  
       2019-10-25 16:43:58 +08:00
    看到 LZ 回复一个:技术的扩充肯定不能只是纵向的啊,还是要有横向发展的。非常认同。
    入行做 web 到现在多端并行。说说我自己的方向就是:RN - 原生 - 类小程序架构。
    RN 和 weex 本质差不多。理解起来做个小玩意不难。
    Flutter 不看好,号称游戏级别渲染引擎,但是内置动画不多,做起来的 IOS APP 相比原生开发的差很远(可以参照安卓和 IOS 的过渡动画)。虽然是 G 家的东西,但是安卓端不是 Google 说了算的,国内行业还是用原生开发方便点。
    而我说的类小程序架构,就是目前市面上大部分小程序的实现架构。看起来是和 uni-app 差不多,但其实有些许差距。详细之处自己实现起来会才会明白。
    ajaxfunction
        27
    ajaxfunction  
       2019-10-25 16:48:20 +08:00
    如果是 top 系列互联网公司就用原生,
    其他就用 uniapp 吧,毕竟 sdk 和 api 接口都成熟的一批,
    但其缺点是功能有限,涉及到底层的调用就有点捉急了
    Creolophus
        28
    Creolophus  
       2019-10-25 17:08:16 +08:00 via iPhone   1
    @fyxtc 看完 swiftui,我觉得 flutter 代码巨恶心
    anmie
        29
    anmie  
       2019-10-25 17:32:42 +08:00
    我就说我用过的,rn:臃肿,时常出问题。uni-app:性能不好,本质就是小程序引擎上运行小程序,不过 vue 一把嗦,加上官方编辑器,开发体验一级棒 一级流畅,除了写代码之外的部分 官方都帮忙做了,真傻瓜式开发。并不是吹它,虽然着么好,但是因为性能问题确实不推荐。
    hikarugo
        30
    hikarugo  
       2019-10-25 17:40:04 +08:00
    @Creolophus 害,我可能适应性还可以吧。。。任何代码风格都觉得没什么不适。。。
    ngn999
        31
    ngn999  
       2019-10-25 17:54:11 +08:00
    iOS 搞逆向的话, 能作为一个发展方向吗? iOS 招聘中没多少要求动逆向的吧
    sidegem
        32
    sidegem  
       2019-10-25 19:06:26 +08:00
    最近在学 flutter,感觉上手没有那么快,还需要学习 dart 语言.
    darkninght
        33
    darkninght  
    OP
       2019-10-25 19:12:38 +08:00
    @17681880207 有道理
    darkninght
        34
    darkninght  
    OP
       2019-10-25 19:13:38 +08:00
    @sidegem 是的,而且写起来略微难受
    darkninght
        35
    darkninght  
    OP
       2019-10-25 19:14:53 +08:00
    @ngn999 没搞过逆向开发不太了解行情,但是我觉得逆向妥妥的是一个高光加分项,大厂肯定喜欢有逆向经验的 RD,而且玩逆向的话也可以不止拘泥于打工上班。
    darkninght
        36
    darkninght  
    OP
       2019-10-25 19:16:06 +08:00
    @ajaxfunction 好的 我决定还是先从 uni-app 下手,感觉比较省心,而且没准没事干了还可以接点小活,一套输出 iOS、android、小程序,还是比较舒服。
    mamahaha
        37
    mamahaha  
       2019-10-25 19:18:17 +08:00
    先看一遍手册或教程了解一下,如果你不是零基础没学过编程,一般用不了几天,然后再决定用哪个,我觉得当前 RN 比较靠谱些,未来就不好说了。
    Aether
        38
    Aether  
       2019-10-25 19:42:06 +08:00
    @Sniper416
    @darkninght
    uniapp 真香,不过文档真心差 +1

    哈哈哈。
    文档主要靠猜和搜索。很多内容可以实现但并没有什么文档……
    xiangyuecn
        39
    xiangyuecn  
       2019-10-25 19:59:17 +08:00
    讲真,我要歪个楼,一定要 app 吗? h5 不香吗,pwa 不香吗 h5 才是真跨平台,10 年前的诺基亚都能运行,其他的算球
    akiakiseofficial
        40
    akiakiseofficial  
       2019-10-25 20:08:06 +08:00 via Android
    管他语法丑不丑,写起来爽就行了,看好 Flutter
    IvanLi127
    &bsp;   41
    IvanLi127  
       2019-10-25 21:11:19 +08:00 via Android
    @darkninght 怎么就难看了?
    U2Fsd
        42
    U2Fsd  
       2019-10-25 21:30:51 +08:00
    以前不喜欢 uni-app 觉得社区不行。

    现在发现外包和简单的项目用 uni-app 不错。快速实现,简单好用。 缺点可能就是不太适用于复杂的原生需求。
    rf99wSiT6IxH1Z23
        43
    rf99wSiT6IxH1Z23  
       2019-10-25 21:38:33 +08:00
    用过一点 ionic,基于 cordova 的,weex, uni-app 也是吧,不会 native 的话,调试难 :(
    ChangQin
        44
    ChangQin  
       2019-10-25 22:53:11 +08:00
    @Hanggi 我就是因为嵌套 1w 层弃坑大军中的一员(手动滑稽.jpg)
    5200
        45
    5200  
       2019-10-25 22:56:59 +08:00
    这个问题我也问过,强烈推荐 Flutter。
    第一次构建项目也是用 uni-app,再也不想用了。。。
    很多原生组件调用的比较麻烦,社区里面很多库和 UI 都挑机型。
    后面被迫放弃重新用 Flutter 写了。
    如果你为了快速出项目,而且是不用调用太多底层的话,
    用 uni-app 开发比较快,学习成本也比较低,了解过 vue 就行。
    如果为了长远的计划,推荐 Flutter。
    RN 就不用考虑了,他火是因为出来 比较早,有很多坑还没修复。
    同事之前写 RN 的亲身经历,
    SolidZORO
        46
    SolidZORO  
       2019-10-25 23:00:13 +08:00
    首选 RN 没错,RN 现在正在大面积重构的路上,就快完成了。

    Flutter 我估计还没火起来就被砍了。
    exploreexe
        47
    exploreexe  
       2019-10-25 23:09:57 +08:00
    说 RN 好的真不知道到底有没有用过。很多公司都弃坑了。
    flutter 也是,闲鱼产品做的多垃圾就不说了,之前闲鱼团队遇到 app 体积大的问题都是直接和谷歌对接,你一个个人开发者没事也找谷歌吗?
    YUyu101
        48
    YUyu101  
       2019-10-25 23:54:18 +08:00
    要么就用最简单的,不考虑性能,这样投入大量时间的风险降到最低,要么就全部原生,一般人应该没时间一个个去踩坑。
    railgun
        49
    railgun  
       2019-10-26 01:32:04 +08:00
    不要用 uniapp,原生核心不开源,有问题都改不动。不用动 OC JAVA 代码的项目可以试试。
    推荐 Flutter,跨平台里面性能最好,配套的开发工具用起来也很流畅。
    RN 只跑过 demo,不评价。
    ericgui
        50
    ericgui  
       2019-10-26 01:39:22 +08:00
    RN
    ericgui
        51
    ericgui  
       2019-10-26 01:41:19 +08:00
    @SolidZORO +1 RN 现在有了微软的加持,微软正在帮助 FB 重写 RN on windows

    Flutter 不行,搞不好 Flutter 2.0 你又要重新学一遍,如果没被砍掉的话。
    skenan
        52
    skenan  
       2019-10-26 07:57:32 +08:00   1
    推荐 React Native

    一个 app,要考虑开发成本,现在前端程序员基本都会 React, 从 React 迁移到 React Navie 基本无压力

    而且配合 https://expo.io/ 框架,不需要写任何原生代码,全是 JS

    React Native 新推出的 https://facebook.github.io/react-native/docs/hermes/ 也在提高 android 端性能

    相比之下,基于 flutter 营销的 远大于 真正使用 flutter 的

    大部分人学了几天 flutter, 写了几篇公众号,就开始狂吹,来给自己涨粉

    React Native 拥有的是 React 的生态,这是 Flutter 不可能达到的
    ddup
        53
    ddup  
       2019-10-26 08:23:53 +08:00 via Android
    不要用 uniapp,原生核心不开源,有问题都改不动。
    官方文档看了整合进现有项目去失败找不到说法
    hacksth
        54
    hacksth  
       2019-10-26 09:05:35 +08:00
    管他啥,挑一个技术赶紧开始学一学,搞起来之后再挑。要不纠结来纠结去,大家的建议也五花八门,你内心又摇摆不定,最后八成不了了之。
    geekdocs
        55
    geekdocs  
       2019-10-26 09:15:16 +08:00
    flutter+1
    Sniper416
        56
    Sniper416  
       2019-10-26 09:31:56 +08:00
    @xiangyuecn 用 H5 帮我拿个设备 id 试试!?
    maomaomao001
        57
    maomaomao001  
       2019-10-26 09:37:46 +08:00
    RN 吧, 更成熟,相关资料也多
    flutter 说不定真有一点会搞出 dsx ( jsx ) ,下载写法实在难看
    palxie
        58
    palxie  
       2019-10-26 12:58:13 +08:00
    rn 吧
    qfdk
        59
    qfdk  
    PRO
       2019-10-26 13:55:54 +08:00 via iPhone
    @darkninght 哪里公认了?!
    a4390509
        60
    a4390509  
       2019-10-26 14:31:29 +08:00
    RN 写自定义控件不方便,要 IOS Android 两端都实现,flutter 就不用。
    说 flutter 嵌套的,就好像 RN 不嵌套一样,感觉 RN 和 flutter 的写法出奇的相似。
    而且如果之前 js 没有基础的话,讲道理 dart 上手比 js 快。
    xiangyuecn
        61
    xiangyuecn  
       2019-10-26 14:53:59 +08:00
    @Sniper416 #56 拿设备 ID 就看要什么样的了,宽松有宽松的解决方案,严格有严格的解决方案,设备 ID 不是说想拿就能轻易拿到的
    Sniper416
        62
    Sniper416  
       2019-10-26 15:06:08 +08:00
    @xiangyuecn 那不就对了,不是所有场景 H5 都可以覆盖的,该上 APP 只有老老实实上。
    MarginK     63
    MarginK  
       2019-10-26 15:24:24 +08:00
    哈哈哈哈哈哈 这贴有意思

    我一个写了 4 年 iOS 的,在这贴里硬是插不进一句嘴你敢信?
    xiangyuecn
        64
    xiangyuecn  
       2019-10-26 15:42:39 +08:00
    @Sniper416 #62 你说的是事实。不过大部分 app,就算没有 app 仅靠 H5 来实现,就能实现 98%的界面和功能。事实也如此,尤其是那种网购类的,不但有 app 还喜欢在小程序里面搅屎
    solgh
        65
    solgh  
       2019-10-26 16:03:26 +08:00
    这年头还是得学学安卓原生,物联网,还是得靠原生.....
    KeyboardManAnAn
        66
    KeyboardManAnAn  
       2019-10-26 16:05:54 +08:00 via iPhone
    个人还是比较看好 flutter,其实她这种完全自 UI 的方式,并不完全是原创的,在桌面端本来就是有原型的,QT 就是完全的自绘 UI 不也一样是玩的很溜吗?
    darkninght
        67
    darkninght  
    OP
       2019-10-26 16:44:21 +08:00
    @MarginK 我也是四年 iOS,畅所欲言吧兄弟,你们的跨平台经验对我都是很有指导意义的
    uleh
        68
    uleh  
       2019-10-26 18:54:47 +08:00
    Flutter 是 Google 官方的跨平台方案,已经上了 Google 开发者大会了,不会差的
    lizhuoli
        69
    lizhuoli  
       2019-10-26 18:57:24 +08:00 via iPad
    你是为了“寻求下突破”,还是为了“找下一家工作,升 P”。前者 Flutter,你可以深入学习如何构建 GUI 系统,绘制引擎,事件循环等,往底层走广。后者选 React,能向 Web 方向发展,往端上走
    nanjia
        70
    nanjia  
       2019-10-26 21:57:53 +08:00 via Android
    uni-app 上手确实快,做一般的应用也够了,flutter 更纯净
    wly19960911
        71
    wly19960911  
       2019-10-27 11:51:41 +08:00 via Android
    @lizhuoli flutter 的底层我感觉看着真的不错…比 Web 强多了。很多实现方面 Web 根本不接触。


    另外说一下…微信里面也用了 flutter,至少这样的重量级生态也选择 flutter,我感觉没问题
    axer0912
        72
    axer0912  
       2019-10-27 21:01:28 +08:00 via iPhone
    最近在写 flutter,感觉写 widget 嵌套的问题通过封装抽象不太会搞得很深,jsx 嵌套写深了其实也挺烦的。dart 感觉上手没啥压力,构造函数这块有名参数初始化列表需要看下别的和 ts 差不多
    iXInbo
        73
    iXInbo  
       2019-11-02 14:44:55 +08:00
    Flutter 吧,SwiftUI 和这个很类似,会减少点以后转 SwiftUI 的学习成本
    laibin2
        74
    laibin2  
       2019-11-04 11:49:09 +08:00
    短期 RN,长期 flutter
    airdrop
        75
    airdrop  
       2019-11-08 18:07:30 +08:00
    Flutter +1,Flutter 我们公司已经用了一段时间,感觉还好。而且 Flutter 的这个技术方向我比较看好
    chosan
        76
    chosan  
       2020-06-17 12:50:15 +08:00
    就目前市面上的,我最看好的就 pwa,进退自如。pwa 直接从浏览器提供应用原生支持,无需上架,无需下载升级,各种无需,而且网页跨平台性最强。别说什么 pwa 不行了,前不久 google 才用 pwa 替换了很大一部分 store 的 app,直接看 pwa 解决了什么问题以及它和 web 的关系,就大概能推断它能走得远了。普及程度本身就是一步一步来的,现在支持还不够全面,es6 、es7 等等不都还没有在所有浏览器全面支持么
    xmsz
        77
    xmsz  
       2020-11-14 10:55:31 +08:00
    看你有没有时间学习
    有就学 Flutter,一劳永逸

    没时间就学 React-native + Taro

    傻子才选 Uni-APP,什么都最差,又没有未来。除非你一个人接外包用
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5082 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 08:46 PVG 16:46 LAX 00:46 JFK 03:46
    Do have faith in what you're doing.
    ubao msn 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