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 · 30054 次点击
    这是一个创建于 1616 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 想着有时间尝试下逆向
    fyxtc
        14
    fyxtc  
       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 一把嗦,加上官方编辑器,开发体验一级棒 一级流畅,除了写代码之外的部分 官方都帮忙做了,真傻瓜式开发。并不是吹它,虽然着么好,但是因为性能问题确实不推荐。
    fyxtc
        30
    fyxtc  
       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 年前的诺基亚都能运行,其他的算球😂
    xlui
        40
    xlui  
       2019-10-25 20:08:06 +08:00 via Android
    管他语法丑不丑,写起来爽就行了,看好 Flutter
    IvanLi127
        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 不错。快速实现,简单好用。 缺点可能就是不太适用于复杂的原生需求。
    cnscorpions
        43
    cnscorpions  
       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  
       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
    error
        75
    error  
       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   ·   我们的愿景   ·   实用小工具   ·   5385 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 06:59 · PVG 14:59 · LAX 23:59 · JFK 02:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.