React native 世博会和React Native有什么区别?

React native 世博会和React Native有什么区别?,react-native,react-native-android,expo,react-native-ios,exponentjs,React Native,React Native Android,Expo,React Native Ios,Exponentjs,从 Expo允许web开发者通过在JavaScript中编写一次,构建真正的本地应用程序,在iOS和Android上运行 这不是React Native的工作吗?区别是什么?在Expo中编写代码时,您正在编写本地代码。世博会 两个主要部分: Expo CLI(Expo CLI):用于创建项目、查看日志、在设备上打开、发布等的开发人员工具 Expo客户端:手机上的一个应用程序,可用于打开项目 当你在使用它们时,不需要通过XCode或Android Studio,也可以让其他人查看它们!如果您通过

Expo允许web开发者通过在JavaScript中编写一次,构建真正的本地应用程序,在iOS和Android上运行


这不是React Native的工作吗?区别是什么?

在Expo中编写代码时,您正在编写本地代码。世博会 两个主要部分:

  • Expo CLI(
    Expo CLI
    ):用于创建项目、查看日志、在设备上打开、发布等的开发人员工具

  • Expo客户端:手机上的一个应用程序,可用于打开项目 当你在使用它们时,不需要通过XCode或Android Studio,也可以让其他人查看它们!如果您通过
    expo cli
    发布,用户可以随时通过Android或iOS上的expo客户端访问它,只要登录到发布它时使用的同一帐户。最后,我们还可以构建独立的应用程序,这样人们就不必使用Expo客户端来打开它,如果您愿意,您可以将其分发到应用程序商店和play商店

  • 所以世博会是建立在React Native之上的一套工具。这些工具依赖于世博会上的一个关键信念:只要有一套全面的API暴露于JavaScript,就可以构建大多数应用程序,而不需要编写本机代码

    这一点很重要,因为使用React Native,您可以始终下拉到本机代码。这有时非常有用,但也要付出代价:如果你想让别人测试你的二进制文件,你需要向他们发送你的二进制文件,世界另一端的人不能在你处理它时点击链接打开它,你也不能像在浏览器中那样,只需点击一下就发布它

    对于Expo,我们建议尽可能避免使用本机代码。正如我前面提到的,我们认为JavaScript有一套全面的API,大多数应用程序都不需要这样做。因此,我们的目标是提供这套全面的API,然后构建在本机运行时共享的世界中可以存在的所有优秀工具

    但是,如果您必须找到要下拉到本机,则可以使用eject并继续使用Expo提供的本机API,同时具有与任何本机项目相同的控制级别


    世博会官方文件对此进行了解释

    世博会有点像Rails。很多事情都是为你准备的,所以你可以更快地开始并走上正确的道路

    使用Expo,您不需要Xcode或Android Studio。您只需使用任何您熟悉的文本编辑器(Atom、vim、emacs、Sublime、VS代码,任何您喜欢的)编写JavaScript。您可以在Mac、Windows和Linux上运行XDE(我们的桌面软件)

    以下是世博会提供给您的一些开箱即用的东西:

    支持iOS和Android

    你可以直接在iOS和Android上使用Expo编写的应用程序。你不需要为每一个都经历一个单独的构建过程。只需在iOS或Android(或计算机上的模拟器或模拟器)上的app Store中打开Expo客户端应用程序中的任何Expo应用程序

    推送通知

    推送通知使用单一、统一的API在iOS和安卓系统中都能即时工作。您不必设置APN和GCM/FCM,也不必配置ZeroPush或类似的东西。我们认为我们现在已经尽可能地简化了

    Facebook登录

    这可能需要很长时间才能正确设置,但在世博会上,您应该能够在10分钟或更短的时间内使其正常工作

    即时更新

    只需单击XDE中的“发布”,即可在几秒钟内更新所有世博会应用程序。你不需要设置任何东西;就是这样。如果您不使用Expo,您可以使用Microsoft代码推送或滚动您自己的解决方案来解决此问题

    资产管理

    图像、视频、字体等都通过世博会在互联网上动态分布。这意味着它们可以即时更新,并且可以动态更改。Expo内置的资产管理系统负责将回购协议中的所有资产上传到CDN,以便为任何人快速加载

    没有Expo,正常的做法是将你的资产捆绑到你的应用程序中,这意味着你无法更改它们。或者,您必须自己管理将资产放在CDN或类似设备上

    更容易更新到新的React本机版本

    我们每隔几周发布一次新的世博会。如果愿意,您可以继续使用旧版本的React Native,也可以升级到新版本,而无需担心重新构建应用程序二进制文件。您可以在自己的时间内升级JavaScript

    但没有本机模块…

    Expo的最大限制是,如果不分离并使用ExpoKit,就无法添加自己的本机模块


    Brent Vatne的回答很好,但我想补充一些细节


    Expo扩展了React Native的API界面 React Native并没有为您提供所有现成的JS API,只提供最基本的功能。React本地开发人员希望使用Android Studio/XCode链接其他本地库。世博会旨在增强RN,并为最常见的需求提供所需的所有JSAPI。它基本上是一组定义良好的高质量本机lib,已经打包在一个lib:ExpoKit中。有时这些库实际上已经存在于RN world中,并集成到ExpoKit中

    还需要注意的是,世博会团队不能将每个lib都包含在ExpoKit中(这可能会造成一些挫折),因为hello world