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

简介: 近日,Airbnb 发表了一组由 5 篇博文组成的系列文章(https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c),他们在文章中宣布停止使用 React Native,并将其从代码库中移除,转而使用 Swift/Objective-C/Java/Kotlin。

近日,Airbnb 发表了一组由 5 篇博文组成的系列文章(https://medium.com/airbnb-engineering/react-native-at-airbnb-f95aa460be1c),他们在文章中宣布停止使用 React Native,并将其从代码库中移除,转而使用 Swift/Objective-C/Java/Kotlin。

在过去的几年中,在谈及“是否应该使用 React Native”这个话题时,通常都会有人指出,Airbnb 这家世界级的公司在产品方面做得非常出色,他们在 React Native 上投入了大量精力,并且正在使用它。然而,现在出现了大反转:一家关心产品质量的顶级公司对 React Native 进行了大量投入,在经过非常仔细的研究之后,决定弃它而去。对于任何想使用 React Native 的人来说,这都是一件非常可怕的事情。

另一方面,Airbnb 是 React Native 开源社区的重要贡献者。react-native-maps 和 Lottie 是两个非常重要的库(都包含在 Expo SDK 中),最初由 Airbnb 开发。Leland Richardson 在进入谷歌之前,曾经是该社区最著名的人物之一。人们肯定会记住他们所做出的贡献。

不过,如果你仔细阅读这一系列文章的内容,他们大部分时间都在说 React Native 相当不错,但不适合 Airbnb。就个人而言,这并不会让我感到十分惊讶。数以万计的开发者正在考虑使用 React Native,我与他们中的很多人进行过交谈,我发现考虑使用 React Native 的团队大致可以分为三大类,其中两类团队很可能会取得成功并乐在其中,而对另外一类团队来说可能是个噩梦。

我应该在项目中使用 React Native 吗?

这里有一个快速指南,可以帮助你和你的团队决定是否应该在项目中使用 React Native。

1. 你使用 React Native 从头开始构建一个新应用,并希望使用 JavaScript 开发所有的东西

如果是这种情况,人们通常都会很开心,并可以获得更好的结果。这个时候 Expo 非常适合你,你可以使用大量内置的原生模块,在不需要使用 Xcode 或 Android Studio 的情况下即可完成所有的事情,升级到新版本几乎毫不费劲,而且可以随时轻松推送代码更新,无需向应用商店提交新版本。如果由于某种原因,你需要使用原生代码开发一两个页面,并且已经定义好这些页面的边界,那么这么做通常也没什么问题。如果是我从头开始创建一个新应用,我会选择使用 Expo/React Native。

2. 你正在使用 React Native 开发少量的二级页面

如果你正在考虑使用 React Native 开发一些简单的二级页面,如设置、常见问题解答或“关于”页面(可能只需要把它们嵌入到 WebView),那么你就走运了。从使用体验方面看,这些东西不需要与应用程序的其他部分有密切联系,但整体观感却更像是“原生”的。

3. 你有一个使用 Swift/Java/Objective-C/Kotlin 开发的应用程序,现在你想要使用 React Native 开发其中的一部分

这种“棕色地带”(brownfield)的例子——你有一个使用 Swift 和 Java 开发的应用程序,你想要在跨多个视图或屏幕的地方引入 React Native——更难应付。对于 Airbnb 在这条道路上遇到了很多挫折,我并不感到惊讶。有经验的原生开发者在学习第二种完全不同的技术栈时也会感到沮丧。如果你在同一屏幕上同时使用原生视图和 React Native 视图,在 React Native 方面,你会将数据保存在 JS 对象中,而在原生方面,你会将数据保存在 Swift/Java 的数据结构中,要跟踪客户端状态就会变得很困难。因为 React Native 目前只有一个异步桥接,要在这个层面进行集成,可能会非常复杂,而且效率低下。现在想象一下其他 10 个类似的问题(导航、布局、委托方法、版本控制等)。如果一种技术的开发者总是要去处理另一种技术的最坏情况,那么最终一定会走上一条不归路。

4. 你的公司里有一个 iOS 团队和一个 Android 团队

即使你是前面两种情况中的一种,那些自认为拥有最强 iOS 程序员和 Android 程序员的公司也很难对 React Native 感到满意。iOS 程序员对此尤为不满,他们一般会认为 JS 是对公司代码库的污染,Android 程序员的感受则相对缓和一些。

即使你将 React Native 用在它所擅长的领域,但因为一些非技术问题,要让原生开发和 React Native 开发在企业中大规模并存仍然很困难。

至于它的价值,我几乎赞同 Airbnb 博文中列出的所有对 React Native 的指责。我们可以在 Expo 中发现很多相同的东西。而且我自己列出的受挫清单比这个要长得多。不过,这项技术在很多方面都表现得非常好,而且会越来越好。例如,人们普遍认为,想要获得良好的导航观感就要使用原生导航,但现在来自 Expo 团队的 Brent 已经在 react-navigation 库上进行了大量工作,它很好用,观感也很不错。它已经成为大多数 React Native 应用程序导航的最佳选择。

我对这个项目表示乐观,因为 Facebook 的一些最有热情的人(特别是 Hector、Sophie 和 Ram)正在重构 React Native,并制定了很多明智的计划,解决了一些最重要的问题。

我认为 React Native 正处在一个很好的位置,其中的一个原因是微软在新版本的 Office 中使用了 React Native(https://twitter.com/TheLarkInn/status/1006746626617008128)。

从宏观角度来看,使用像 JavaScript 这样的脚本语言来开发移动应用程序几乎是不可避免的,因为使用 Swift/Objective-C/Java/Kotlin 这些语言来开发 UI 效率太差。此外,每个应用程序都要开发两次(或者如果算上 Web 就是三次),这根本就是个大麻烦。无论是 React Native、Flutter 还是其他羽翼未满的新产品,它们也都大致如此。就我个人而言,我对获胜者的机会猜测如下:React Native 55%、Flutter 15%,其他我们还看不到的 30%。

  原文链接

https://blog.expo.io/should-we-use-react-native-1465d8b607ac


原文发布时间为:2018年06月26日
原文作者:掘金
本文来源: 掘金  如需转载请联系原作者
相关文章
|
2月前
|
开发框架 前端开发 JavaScript
探索前端开发中的跨平台框架React Native
本文将介绍前端开发中一种备受关注的跨平台框架React Native,通过比较原生应用与React Native的优缺点,探讨其在实际项目中的应用以及未来发展趋势。
|
2月前
|
开发框架 前端开发 JavaScript
从零开始学习React Native开发
React Native是一种基于React框架的移动端开发框架,使用它可以快速地构建出高性能、原生的移动应用。本文将从零开始,介绍React Native的基础知识和开发流程,帮助读者快速入门React Native开发,并实现一个简单的ToDo应用程序。
|
3月前
|
前端开发 JavaScript Android开发
跨端技术栈综合考察:深入剖析 UniApp、Flutter、Taro 和 React Native 的优势与限制
跨端技术栈综合考察:深入剖析 UniApp、Flutter、Taro 和 React Native 的优势与限制
|
3月前
|
前端开发 安全 Swift
【教程】React Native 应用中的代码混淆与安全性管理
【教程】React Native 应用中的代码混淆与安全性管理
46 0
|
2月前
|
存储 前端开发 JavaScript
从零开始学习React Native开发
【2月更文挑战第1天】React Native是一种跨平台的移动应用程序框架,可以使用JavaScript和React来构建Android和iOS应用程序。本文将带您从零开始学习React Native开发,涵盖了基础知识、组件、样式、布局、API等方面。
|
2月前
|
前端开发 IDE 小程序
【社区每周】React Native 初探;应用中支持添加应用管理员(2月第一期)
【社区每周】React Native 初探;应用中支持添加应用管理员(2月第一期)
34 0
|
3月前
|
移动开发 前端开发 JavaScript
探究移动端混合开发技术:React Native、Weex、Flutter的比较与选择
移动端混合开发技术在移动应用开发领域日益流行,为开发者提供了更高效的跨平台开发方案。本文将比较三种主流混合开发技术:React Native、Weex和Flutter,从性能、生态系统和开发体验等方面进行评估,以帮助开发者在选择适合自己项目的技术时做出明智的决策。
|
3月前
|
移动开发 前端开发 weex
React Native、Weex、Flutter 混合开发技术的比较与选择
移动应用已经成为人们日常生活中不可或缺的一部分,而混合开发技术也随之崛起并逐渐成为主流。本文将比较 React Native、Weex 和 Flutter 三种混合开发技术,并探讨它们各自的优缺点,以及如何根据项目需求做出选择。
54 1
|
3月前
|
开发框架 Dart 前端开发
Flutter vs React Native:跨平台移动应用开发的终极对决
随着移动应用的普及,跨平台移动应用开发成为了一种趋势。Flutter和React Native是当前最受欢迎的跨平台开发框架之一,但它们各自有着不同的特点和优势。本文将对Flutter和React Native进行全方位比较,以帮助开发者了解两个框架的差异,从而选择适合自己的开发工具。
41 3
|
3月前
|
开发框架 前端开发 JavaScript
react native是什么,怎么用
react native是什么,怎么用
44 0