Airbnb 弃用之后,我们还应该用 React Native 吗?

达尔文
 达尔文
发布于 2018年06月27日
收藏 17

在过去几年,当人们谈到 React Native 时,都会马上联想到 Airbnb 在这方面做得非常出色。然而,近日,Airbnb 技术团队在 Medium 上发布的博客却让事态出现了惊天逆转,Airbnb 官方宣布停止使用 React Native,并将其从代码库中移除,转而使用 Swift/Objective-C/Java/Kotlin。

一家世界级顶尖公司在对 React Native 投入大量精力后,突然决定弃它而去,这让不少想要使用和正在使用 React Native 的人都感到震惊。

然而,Medium 上一位叫 Charlie Cheever 的作者却表示,这一结果并不令他惊讶。Charlie 与许多考虑使用 React Native 的人交谈过,并将他们大致分为三类,其中两类非常适合使用并能乐在其中,而另外一类是不太适合的。

结合了大多数人的问题与一些实践经验,Charlie 最终整理出了一篇快速指南,帮助个人和团队决定是否要在项目中使用 React Native。内容如下:

1、使用 React Native 从 0 开始创建一个新应用程序,并希望用 JavaScript 构建所有应用。

这种情况通常比较乐观,使用者也能取得一个很好的结果。Expo 非常适合这种情况,它提供大量内置的原生模块,使用者不需要使用 Xcode 或 Android Studio,就能完成所有的事情;新版升级几乎毫不费劲;可以随时推送代码更新,而不用去应用商店提交新版本。

如果你需要在原生代码中构建一两个页面,并且已经定义好页面边界,那这么做也没什么问题。所以,如果需要从 0 开始创建一个新应用,Expo/React Native 是个不错的选择。

2、正在使用 React Native 进行少量的二级页面开发

如果你想利用 React Native 进行一些简单的二级页面开发,如设置(Setting Screen)、常见问题答疑(FAQ)和关于(About)等,或者只是想把它们嵌入在 WebView 中,那你就走运了。这些页面不需要与应用的其他部分密切联系,但整体看上去更像是“原生”的。

3、你有一个用 Swift/Java/Obj-C/Kotlin 编写的现有应用,并且想要在 React Native 中开始编写其中的一部分

举个“棕色地带”的例子(棕色地带,通常是指闲置废弃的、未被充分利用的领域,由于某些原因,使得重新开发变得困难。),比如,你有一个用 Swift 和 Java 编写的现有应用程序,然后你希望将 React Native 引入到一个多视图和屏幕中,这就很难做到。

如果你需要在同一屏幕上同时使用原生视图和 React Native 视图,通常,在 React Native 方面,你会将数据保存在 JS 对象中,而在原生方面,你会将数据保存在 Swift/Java 的数据结构中,这样以来,跟踪客户端状态就会变得很困难。因为 React Native 目前只有一个异步桥接(asynchronous bridge),你需要编写大量桥接基础设施的代码,才能保证工作有效进行,这个过程很麻烦,会严重影响工作效率。

在导航、布局等类似方面也是这样,如果开发者在使用一种技术的同时,必须要解决另一技术带来的问题,那感觉就像掉进了无底洞。

4、公司有 Android 开发团队,也有 iOS 开发团队。

即使公司只有其中一种开发团队,并且自认为自己拥有最强 Android/iOS 开发者,他们也很难对 React Native 满意。尤其是 iOS 开发,他们通常认为 Javascript 会“污染”(infestation)公司代码库。

最后作者表示,自己几乎完全同意 Airbnb 博客列出的使用 React Native 带来的不便,(可参考之前发布的文章:Airbnb 宣布放弃使用 React Native,回归使用原生技术)但依然对这个项目保持乐观,因为微软已在新版中使用 React Native。

作者认为 React Native、Flutter 等这些产品面临的问题大致差不多,如果要让他来评判其中的优胜者,他给出的概率是:React Native 55%、Flutter 15%,其他 ≤30%。你怎么看?

作者原文:Should we use React Native?

编译:开源中国

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:Airbnb 弃用之后,我们还应该用 React Native 吗?
加载中

精彩评论

dolloyo
dolloyo
别人用某项技术自己也跟风用,别人弃某项技术自己也跟风弃,这类人是永远也得不到长进的。😏
jump--jump
jump--jump
大公司完全不在乎这种跨平台技术 没毛病。有人 有钱 为何不找更专业的呢
obaniu
obaniu
不是技术驱动的团队,应远离不成熟的新技术.无论国内外移动互联网公司大部分是产品导向的,使用新技术是希望新技术能提高现有产品开发维护效率.然新技术必然会面临一堆未知的坑,像RN很多团队要么没技术储备要么未投入资源研究只想搭便车,到最后只能从吹牛逼到灰溜溜消失匿迹.
随风溜达的向日葵
随风溜达的向日葵
这个问题多简单,有那钱圈2个源生开发团队,还搞什么RN?
MrD
MrD
Airbnb 是你爹吗? 他用你就用,他吃屎,你也跟着吃屎...

最新评论(24

下里巴人_770728
下里巴人_770728

引用来自“下里巴人_770728”的评论

学了几天,感觉expo(背后是react native)是个人项目的首选,没有之一。
其实非常看好rax,国内项目,中文文档,同时生成ios与android。让我放弃的原因有三:1. 文档质量真的太差,新手不友好;2. 官网的一个demo跑不通,信心顿失;3. 感觉资源太少。确实是阿里内部比较活跃的项目,也不清楚为啥会这样。
然后是rn,确实配置比rax复杂,但一旦删除node_modules然后重新npm i,就会报错,尝试所有方法无法修复。
然后自然找到了expo,与Rax一样是同时生成ios与android,感觉非常成熟:文档齐全,案例丰富,调试方便,配置简单。配置中遇到一些坑,基本都跟国内网络相关,并且都有解决方法。
学习expo/rn中,推荐个人开发者尝试。

引用来自“lmlife”的评论

不是吧?那你怎么对代码进行版本控制?提交到svn或者git的时候总不能把node_modules文件夹提交上去吧?
补充一下:
上面的node_modules被删后报错问题,只要使用yarn,而不使用npm i,就轻松解决了。
我是发现项目根目录下存在yarn.lock才醒悟的...
以后还是全面改用yarn吧😝
下里巴人_770728
下里巴人_770728

引用来自“下里巴人_770728”的评论

学了几天,感觉expo(背后是react native)是个人项目的首选,没有之一。
其实非常看好rax,国内项目,中文文档,同时生成ios与android。让我放弃的原因有三:1. 文档质量真的太差,新手不友好;2. 官网的一个demo跑不通,信心顿失;3. 感觉资源太少。确实是阿里内部比较活跃的项目,也不清楚为啥会这样。
然后是rn,确实配置比rax复杂,但一旦删除node_modules然后重新npm i,就会报错,尝试所有方法无法修复。
然后自然找到了expo,与Rax一样是同时生成ios与android,感觉非常成熟:文档齐全,案例丰富,调试方便,配置简单。配置中遇到一些坑,基本都跟国内网络相关,并且都有解决方法。
学习expo/rn中,推荐个人开发者尝试。

引用来自“花花兽”的评论

直接学flutter吧
感谢推荐!
看过1天左右,确实简单、统一,主要的感觉是:生态与RN暂时没有可比性。所以想等它成熟了再说,感觉flutter确实是以后的趋势。
小熊猫大暴走
小熊猫大暴走
即使公司只有其中一种开发团队,并且自认为自己拥有最强 Android/iOS 开发者,他们也很难对 React Native 满意。尤其是 iOS 开发,他们通常认为 Javascript 会“污染”(infestation)公司代码库。

-----------------------------------------------------------会'污染'
花花兽
花花兽

引用来自“下里巴人_770728”的评论

学了几天,感觉expo(背后是react native)是个人项目的首选,没有之一。
其实非常看好rax,国内项目,中文文档,同时生成ios与android。让我放弃的原因有三:1. 文档质量真的太差,新手不友好;2. 官网的一个demo跑不通,信心顿失;3. 感觉资源太少。确实是阿里内部比较活跃的项目,也不清楚为啥会这样。
然后是rn,确实配置比rax复杂,但一旦删除node_modules然后重新npm i,就会报错,尝试所有方法无法修复。
然后自然找到了expo,与Rax一样是同时生成ios与android,感觉非常成熟:文档齐全,案例丰富,调试方便,配置简单。配置中遇到一些坑,基本都跟国内网络相关,并且都有解决方法。
学习expo/rn中,推荐个人开发者尝试。
直接学flutter吧
灰狐Huihoo
灰狐Huihoo
没有最好的语言和框架,适合自己的就是最好的!😊
obaniu
obaniu
不是技术驱动的团队,应远离不成熟的新技术.无论国内外移动互联网公司大部分是产品导向的,使用新技术是希望新技术能提高现有产品开发维护效率.然新技术必然会面临一堆未知的坑,像RN很多团队要么没技术储备要么未投入资源研究只想搭便车,到最后只能从吹牛逼到灰溜溜消失匿迹.
随机9380fa
随机9380fa
没了REACT NATIVE ,接下来XX NATIVE 或者REACT XX,多的是,这类新闻就是无聊
随风溜达的向日葵
随风溜达的向日葵
这个问题多简单,有那钱圈2个源生开发团队,还搞什么RN?
牧码氏
牧码氏
也先别指责有这想法的人,只是典型的“技术焦虑”症,好治~~~~多写点代码
Tony1952466760
Tony1952466760
flutter还没退出正式版,这个15%应该是随心情给出的吧
返回顶部
顶部