有多少人是放弃 react-native,转向原生了?

2021-05-04 22:22:51 +08:00
 find456789

最近用 rn 开发了一个 ios 的 app, 就几个简单的页面 ,打包后体积 220m,

在开发中,遇到了各种 nodejs 特有的错误,光排错就花了一大半的时间

而且好几个错误,第二天就自动好了, 完全不知道错在哪里

后来我用了一下 xcode (原生开发), 发现 代码提示、 界面拖拽也都很方便

所以我就考虑,要不要放弃 rn, 转用原生


因为我要开发的 app 都不复杂,所以用原生并不会花很久的时间

如果我要开发的 app 很复杂, 那我估计用 rn,坑会多的让我头疼

所以,不管开发简单的、复杂的, 似乎用原生,才是最划算的, 因为坑可能更少,反而节省了时间,节省了情绪支出


所以我想问问, 我的分析对吗? 是否原生会更好呢?

这里有朋友是 放弃 rn,最终选原生的吗?

能说说 你用 rn 、 用原生的理由吗?

谢谢

8906 次点击
所在节点    React
51 条回复
manami
2021-05-04 22:25:32 +08:00
没有更好,只有更适合
find456789
2021-05-04 22:30:11 +08:00
@manami
可能更适合我的是原生吧, 不过我目前还没有用原生开发过一个 app,所以具体如何 要用一段时间的原生才知道

不过 nodejs 里面的各种出错, 确实让我觉得头疼,有一种本能的逃避
bigggge
2021-05-04 22:35:23 +08:00
是 js 不是 nodejs
find456789
2021-05-04 22:46:25 +08:00
@bigggge
对对, 报错的时候,一大堆信息, 排查十分困难
TimeRain
2021-05-04 23:15:56 +08:00
从来没放弃原生
belin520
2021-05-05 00:37:21 +08:00
使用 rn 的项目也重来没有放弃原生
maichael
2021-05-05 00:49:57 +08:00
老实说,如果原生能满足你,那你一开始选用 RN 就是错的(或者说 ALLIN RN )。
个人项目的话你想用啥就用啥,什么理由都可以不需要,完全可以因为你喜欢 RN 、Flutter 或者原生而选用。
公司项目或者团队项目选用 RN 无非想着节省人力成本,其实很多应用的复杂度是处于你说的这两者之间,它既没那么简单,有不小的工作量和复杂度,但又没有复杂到 RN 搞不定的程度,而且没有性能上的要求。
当然,适不适合是相对的、变化的;随着你的需求变化,应用复杂度变高,RN 可能渐渐就不再适合了。这就像后端一开始选用 Python 、Ruby 之类的语言,开发效率高,迭代速度快;但随着应用复杂度的提高以及需求的变化,原有语言不能满足你的需求只能换一种语言重写了。
HarryQu
2021-05-05 01:47:00 +08:00
使用 RN 、Flutter 这类跨平台框架。

你必须要有较为丰富的原生开发经验作为支撑,否则当遇到问题时,你根本找不到问题的解决办法。
HeapOverflow
2021-05-05 01:48:15 +08:00
discord 就用的 react native 啊,用户体验很不错。
NonClockworkChen
2021-05-05 06:27:02 +08:00
我不仅放弃了 RN,气的我直接,转岗了。
HariopaNic
2021-05-05 07:42:30 +08:00
我司用的是 rn,前期经常碰到一些奇怪的非代码层面 bug,见多了一个一个解决后面就很少看到了。我一直都没懂前端的原生是什么意思,有热心老哥讲讲么,就是指单纯的 html css js 不用任何框架是吧?
alamaya
2021-05-05 08:24:21 +08:00
@HariopaNic 这····你理解的前端就只有 web 吗
xuanbg
2021-05-05 08:43:46 +08:00
@alamaya 据我的观察,大部分的前端,web 就是全部了。。。而且,他们根本不能理解什么是 Client 。。。
meteor957
2021-05-05 09:28:05 +08:00
大部分 web 前端压根没把客户端当做前端来看吧
superrichman
2021-05-05 09:51:45 +08:00
rn 用到最后会逼你用原生,然后就会变成功能没多少,体积超大,体验一般的 app
zjsxwc
2021-05-05 09:55:07 +08:00
现在安卓 kotlin 用 mvvm 写界面,贼简单,只要写个 界面模板 ui 与 viewModel 就能自动绑定,
和前端 vue 写界面一样简单。

比如 kbings https://github.com/EndSmile/KBinding

![ui]( https://p9-tt.byteimg.com/origin/pgc-image/3dc245b11cd34878bdf1ff84cf225f48.png)
![viewmodel]( https://p6-tt.byteimg.com/origin/pgc-image/de06f4d04f9b4238949639f1435ba37c.png)
zjsxwc
2021-05-05 10:04:01 +08:00
@zjsxwc

官方的 jetpack compose 更简单

https://developer.android.com/jetpack/compose
em2046
2021-05-05 10:42:29 +08:00
主要看你要不要支持安卓
以及还需要支持微信小程序(以及各种小程序)+H5,不选择这样跨端的方案而是写多个原生的会不会比较累

至于奇怪的第二天就好的问题,建议还是加上 --reset-cache,强制每次都不用缓存,用了之后启动和打包速度慢很多,但是奇怪的问题少多了
hyyou2010
2021-05-05 12:26:15 +08:00
可能 RN 适用于某些特定场景,比如不很复杂的新闻类展示页面,同时有跨平台需求。其他场景,我倾向原生。方方面面算下来,跨平台未必能节省什么。原生开发是安全的,可以在确定的时间有把握地完成工作。

现在 Google 也在推原生版 React,即 jetpack compose
namelosw
2021-05-05 12:57:49 +08:00
基本就是两个方向的权衡,基本取决于团队需要的是什么,以及团队本身的强项:


1. 原生开发坑少,更快,体验也比较自然。

但是要雇好几个 team 做,如果端特别多,需求特别杂就会看起来很忙其实没做什么事。

2. RN / Flutter 跨端,好处是代码可以部分共享(特别是逻辑和网络层可以封装到一起),端特别多得情况且设计良好很有优势,可能每个只需要一个不同的 view 层,注入不同的 platform specifc 代码就完事了。适合一个 team 然后放几个不同平台专家。

但是性能相对差一些,不可避免有坑,真做起来不可避免还是要了解原生平台。


为了「简单」选 RN 是不可取的,打铁还需自身硬,这种选择本身是一个很大的 trade off 。眼馋 RN Flutter 的开发效率和步调一致,团队里面就得有很多多面手。像被抱怨很多的 Electron 和 React Native,Discord 做得其实都很不错。


另外 React Native 如果启动速度慢可以看下 FB 自己搞得 JavaScript runtime: https://github.com/facebook/hermes

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/774913

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX