React Native 还是原生?求建议 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lissome
V2EX    问与答

React Native 还是原生?求建议

  •  
  •   lissome 2016-09-18 16:05:29 +08:00 13478 次点击
    这是一个创建于 3311 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想个人业余学来做些小应用玩玩。

    RN 方面,前端基础很少。原生 iOS 方面 OC 几年前看过,当时也只是 Hello World 的水准, Swift 没学过; Android 方面基础稍好一点,做过 2 个很小的应用,不过也很久没碰了。

    现在想做做小的 APP ,业余时间和精力不会很多, RN 和原生哪个更值得去学习呢?

    36 条回复    2016-09-19 23:13:45 +08:00
    tmac6740
        1
    tmac6740  
       2016-09-18 16:26:13 +08:00
    原生还是 i 简单
    maddot
        2
    maddot  
       2016-09-18 16:38:30 +08:00   6
    RN 很快的,简单的应用的话可以做到 android, iOS 基本完全通用代码,别听那些说原生的。你做出的应用很大可能没有人用,当然是用速度最快的方案,早开发早放弃。
    microchang
        3
    microchang  
       2016-09-18 16:43:40 +08:00 via Android
    @maddot 噗哈哈哈哈哈!
    murmur
        4
    murmur  
       2016-09-18 16:45:37 +08:00   1
    跟你说 真正靠谱的 拿掉了会对你生活产生影响的 app 什么微信 微博 qq 淘宝 都是 native 如果你硬说 taobao h5 那你也得看看他的 native 壳子有多少黑科技
    越牛 b 的应用 native 层越得过硬 就 rn 那个垃圾 browser 连反向通知都没有能用?!
    企业应用最好还是 ionic 这些 来的快 不求速度美观 还可以在线加载 bundle
    tinyhill
        5
    tinyhill  
       2016-09-18 16:46:37 +08:00   1
    @maddot 你试过用 rn 做 app 吗?很多问题 rn 是没法解决的,底层的很多组件还是基于原生组件,性能不行,所谓一次开发,说是说 android ios 都支持,实际上很多都是有差异性的。自己玩玩可以,正式产品目前还是不推荐。
    maddot
        6
    maddot  
       2016-09-18 16:58:08 +08:00
    @tinyhill 小应用做过,并且正式上线。。。注意楼主说的是自己业余时间发小应用玩玩,没有时间,当然是推荐开发速度最快的,最容易上手的。
    newbieo0O
        7
    newbieo0O  
       2016-09-18 17:02:46 +08:00
    还是原生吧,第三方的限制太多。
    lissome
        8
    lissome  
    OP
       2016-09-18 17:13:07 +08:00
    感谢回复

    @maddot
    @tinyhill
    是的,时间精力有限,一开始就是想学一下 rn 的,不过 google 了一下,看到有人说初学坑比较多,而且学习曲线陡峭,所以现在比较纠结。怕到时候遇到坑爬不出来。。

    @newbieo0O
    原生比较正统,不过 rn 跨平台诱惑比较大。

    @murmur
    ionic 多一个备选
    Comdex
        9
    Comdex  
       2016-09-18 17:16:49 +08:00
    @lissome 楼主可以百度搜索 DeviceOne 这个试试,开发速度比 react native 要快,真正的原生跨平台,就是可能组件还不够丰富
    nicevar
        10
    nicevar  
       2016-09-18 17:40:28 +08:00
    功能比较单一的应用可以用 RN ,复杂的不推荐,毕竟 RN 坑太多,特别是 android ,后面才发现有些问题根本没法解决还得用原生重写一遍就尴尬了
    WordTalk
        11
    WordTalk  
       2016-09-18 17:48:40 +08:00 via iPhone   2
    @murmur
    你的论据很有意思,
    我顺势推理一下,只有微信、 qq 、微博之类极为成熟的 app 都采用一个刚出来的新技术,这个新技术才能用,坐等这么牛逼技术出现

    还有建议你多补补设计模式,多接触点工作以外的技术。不过最好先看看 rn 的数据流设计成这样的原因,因为你的评论一眼就会被人发现,你根本不会 react native 嘛
    murmur
        12
    murmur  
       2016-09-18 17:54:07 +08:00
    @WordTalk 我建议你思考一下 rn 的设计初衷,追求性能、底层、可控制的会考虑纯 native ,或者 native+魔改 webview ,追求高速开发的会考虑 ionic 这种全封装好了的东西,然而现在 rn 很多东西还在 beta ,而且 ios 和 android 差异化实现太多了,这反倒是后面可能会遇到的问题
    “我顺势推理一下,只有微信、 qq 、微博之类极为成熟的 app 都采用一个刚出来的新技术,这个新技术才能用”
    是的,没错,新技术如果不是技术很猛的团队,一定要有大公司淌水,只不过 angular2 和 react 本身就是国外比较“靠谱”的公司出的,所以大家疑虑没那么大,你再看看 vue 呢?
    另外,支付宝不支持 wp ,是不是某种程度也是干死 wp 的理由之一?你看多少公司都不敢给 wp 做东西,但是如果支付宝和微信都出了成熟的 wp 版呢?
    kikyous
        13
    kikyous  
       2016-09-18 17:56:47 +08:00
    rn 就是一个过渡
    murmur
        14
    murmur  
       2016-09-18 18:00:42 +08:00
    @WordTalk 另外不知道你是没看我帖子还是在望文生义, react native 的 wb 直到现在只能通过检测 url 和 stat 变更做到交互,我不知道这是有意为之还是就是没做完,现在支持 js 通知的是第三方实现的 browser ,这我可不敢用
    我的观点是,现在 h5 和 native 混编已经是流行趋势了, h5 在复杂排版、动态加载数据上有着 native 无法比拟的方便和开发效率,如果他的 browser 这么挫我只能否决他了
    这跟数据流向有关系么?分明是缺陷好吧,我又没说他的状态机整合设计和不可变数据,既然你提到了,我也认为这个设计不自然,正常的状态变更就应该跟操作一样,行云流水,我点了按钮弹出对话框,点了图标哪里变化,但是 react 非要把所有的状态抽出来,美其名曰为了性能和 debug 方便还要不可变,你喜欢咯?
    但是话说回来, rn 因为带了 navtab 这些东西,对于小型应用,而且分页比较明显的,不 redux 又如何?还不一样做
    sfree2005
        15
    sfree2005  
       2016-09-18 18:01:12 +08:00 via iPhone
    逻辑简单的可以用 ionic 但要学习 angular

    商城类的 APP ionic 都可以做到,逻辑复杂度不超过这个应该都行

    ionic 也可以作为前期的 demo 如果有更多人感兴趣了自然可以吸引人才和你一起做原生的
    learnshare
        16
    learnshare  
       2016-09-18 18:25:05 +08:00
    demo 用 Web 技术来做就好了
    J735KILnHi7q49cv
        17
    J735KILnHi7q49cv  
       2016-09-18 19:10:46 +08:00
    初学还是建议做 Native ,当你有一定的基础再去尝试 React Native ,这是可能会有更深一层的见解。
    bdbai
        18
    bdbai  
       2016-09-18 19:12:20 +08:00 via Android
    r#12 @murmur “不敢”和“不肯”还是有区别的。
    iFlicker
        19
    iFlicker  
       2016-09-18 21:42:05 +08:00
    据说。。是据说(我也没试过) React Native 的性能并没有 Native 好,
    包括 Native + WebView(H5),,比如??淘宝?反正 Android 是卡的不行
    ---------
    但是 为什么感觉 16 年为啥感觉 Android/iOS 岗位好少的样子。。
    是 React Native 的冲突还是培训机构的冲突。。还是真不行了嘛。。
    (好吧就是抱怨一下。。可能是自己太菜了找不到实习 T.T
    iwege
        20
    iwege  
       2016-09-18 21:52:52 +08:00
    不是有一个 NativeScript 么?那个如何?
    contractswif
        21
    contractswif  
       2016-09-19 00:57:02 +08:00 via iPhone
    @iwege React Native 的 Angular 版本,但是个人认为还在非常初期,没有很好的用它开发的例子
    contractswif
        22
    contractswif  
       2016-09-19 01:04:21 +08:00
    @iwege btw,
    NativeScript: Write once, run everywhere
    React Native: Learn once, write everywhere
    brucegong
        23
    brucegong  
       2016-09-19 04:18:51 +08:00 via iPhone
    @contractswif @contractswif NativeScript 应该没有号称"write once, run everywhere."
    "Learn once, write everywhere"指的应该也是 React 而不是 ReactReact Native 吧?
    Override
        24
    Override  
       2016-09-19 05:14:18 +08:00 via Android
    要不别吵了,这样吧。做系统工具就用原生,做 crud 就用 react native 。
    g0thic
        25
    g0thic  
       2016-09-19 09:14:08 +08:00
    用 RN 吧,没你想的那么多坑,简单应用还是 ok 的
    jiongxiaobu
        26
    jiongxiaobu  
       2016-09-19 10:06:04 +08:00
    @murmur 感觉你的喷点很奇怪啊。 一个应用用 RN 开发,还要用它提供的 browser 干嘛,这不是还停留在 hybrid app 的阶段嘛。 RN 的 browser 只是 RN 中的一个小组建。 建议多了解之后再喷。
    murmur
        27
    murmur  
       2016-09-19 10:13:43 +08:00
    @jiongxiaobu 你没看到国产的 app 一个比一个炫酷 这种复杂布局和炫酷效果不用 h5 嵌入一个一个用源生组件拼么
    contractswif
        28
    contractswif  
       2016-09-19 10:20:27 +08:00   1
    loveuqian
        29
    loveuqian  
       2016-09-19 10:22:19 +08:00
    来吧。和大家一起从 0 开始学习 Swift
    lissome
        30
    lissome  
    OP
       2016-09-19 10:33:01 +08:00
    @loveuqian 那还要学习 Java
    codehz
        31
    codehz  
       2016-09-19 10:33:51 +08:00 via Android
    @murmur 原生又不是非得用官方控件。。。可以自己写自定义控件啊,当然这样做多了就没必要用 rn 了,我估计你想表达的就是这个意思
    murmur
        32
    murmur  
       2016-09-19 11:00:01 +08:00
    @codehz 我的意思是,本着开发和复用的原则(负责任的网站都有 app 和 wap 同时提供), WebBrowser 组件必须足够强大才能撑得起这个交互,这个已经成了基本需求,就是 detail 页或者首屏,然而 rn 的 browser 在交互上弱的没法用
    codehz
        33
    codehz  
       2016-09-19 11:10:41 +08:00 via Android
    @murmur 用 rn 的,就不应该采用原来的架构了。大部分交互都应该用 rn 做而非 web browser 做。。要实现动态性,要用 rn 自己的热更新机制。
    jiongxiaobu
        34
    jiongxiaobu  
       2016-09-19 19:08:18 +08:00 via iPhone
    @murmur 你还是先了解下 rn 再来喷吧…………
    murmur
        35
    murmur  
       2016-09-19 19:55:14 +08:00
    @jiongxiaobu 我当然用过,还被坑过,如果你认为他提供的 jsx+被限制死的 css 能搞定你全部的样式,能搞到天猫京东那样的 detail 不用 webbrowser 我无话可说
    是你们说的要 curd 这不就一个 detail 页面而已么。。
    jiongxiaobu
        36
    jiongxiaobu  
       2016-09-19 23:13:45 +08:00
    @murmur 不是我认为,就是能实现比 html 体验好的。。。 否则要 RN 干嘛。。 你有试过 Animated API 吗?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2743 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 08:37 PVG 16:37 LAX 01:37 JFK 04:37
    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