我们目前正在使用React Native构建一个原生 iOS 应用程序。如果不包括在内,那将是一种耻辱。
优点:
- React 将 DOM 视为实现细节。这使得向原生 UI 的过渡非常自然。它还消除了编写本机应用程序时对 HTML/CSS 的需求。您所需要的只是用 JavaScript 编写的原生组件。
- 原生组件!基本的原生组件已经桥接到 JavaScript,并且有一个社区正忙于将其他所有东西都带过来。问题是,如果你知道或愿意学习一些 Objective C 或 Java,有一个简单的过程可以将任何本机模块(或第三方模块)添加到 React Native。
- 快速迭代。自 3 月份开源以来,master 分支已经有超过 2600 次提交。
- 您可以获得普通 React 的所有好处:虚拟视图层、差异化、声明式 UI 创建、出色的开发人员体验和一流的社区。
- 您可以从同一个存储库为多个平台构建,重用大部分相同的代码库(主要是应用程序逻辑)。
缺点:
- 它还很年轻。有一些功能需要 jimmy-rigging、第三方库或自定义 Objective-C/Java 才能工作。
- 一些与 DOM 或 Browser API 相关联的优秀第三方库仍然无法在 React Native 上运行,包括 React Router。
- 最大的痛苦与 XCode 和 Apple 的开发人员计划有关,但没有办法解决这个问题。
在多平台上构建和维护这些应用程序有多容易?
React Native for Android 于 2015 年 9 月 14 日开源。我还没有使用它,但这是我迄今为止能够学到的。2016 年10 月 21 日更新:今年早些时候宣布了适用于 Windows 通用平台的 React Native。这意味着您现在可以使用 React Native 为 Windows 桌面、Windows 手机甚至 Xbox 构建应用程序!
React Native并非旨在成为一次编写,随处运行的心态。他们采用了一次学习,随处编写的范例。iOS 是一个与 Android 非常不同的平台,因此需要在这两个平台的设计上付出真诚的努力。原生 API 也会有所不同。
因此,您最终会为原生组件和 API 重写代码。但是,您的大部分应用程序逻辑都可以重复使用。事实上,React-Native 的组织方式使您可以将 Android 和 iOS 应用程序保存在同一个存储库中,以便您可以尽可能重用相同的代码。我认为它很棒,但只有时间会证明一切。 据他们说,到目前为止效果很好。
顺便说一句,Facebook 的一个团队使用 React Native 构建了一个 iOS 应用程序,然后转身在三个月内使用 87% 的相同代码库构建了 Android 版本。
为 iOS 开发我的应用程序有什么要求?
目前,您需要 Mac 和 XCode 才能进行部署。目前,解决这个问题的方法很少。根据这个问题和 Slack 上的对话,一旦部署,您实际上可以从 Windows 或 Linux 机器进行开发。Facebook 还致力于开源他们所有的Nuclide包,根据他们在 F8 上的介绍,这些包将包括无需 XCode 即可打包和构建的工具。
总体而言,React Native 是一次出色的体验。在我看来,它比目前其他任何东西都高出一筹。社区内的感觉也非常积极。我只能假设它会随着时间的推移而变得更好。