首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >世博会和React Native之间的区别是什么?

世博会和React Native之间的区别是什么?
EN

Stack Overflow用户
提问于 2016-08-27 00:16:08
回答 10查看 113.2K关注 0票数 281

来自the Expo website

Expo让web开发人员只需在JavaScript中编写一次,就可以构建真正的原生应用程序,这些应用程序可以在iOS和JavaScript上运行。

这不就是React Native所做的吗?有什么关系呢?

EN

回答 10

Stack Overflow用户

发布于 2016-08-27 00:21:42

当您在Expo中编写代码时,您正在编写React Native代码。世博会有两个主要部分:

  1. Expo命令行界面(expo-cli):开发人员工具,用于创建项目、查看日志、在设备上打开、发布等。

  1. Expo客户端:手机上的一款应用程序,可以让你在工作时打开项目,而不需要通过XCode或Android Studio,也可以让其他人查看它们!如果你通过expo-cli发布它,人们可以随时通过安卓或iOS上的世博会客户端访问它,前提是登录到发布它的同一个账户。最后,我们还可以构建独立的应用程序,这样人们就不必使用世博会客户端来打开它,如果您愿意,您可以分发到应用程序商店和play store。

因此,Expo是建立在React Native之上的一组工具。这些工具依赖于在Expo上持有的一个关键信念:只要您有一套全面的API公开给JavaScript,就可以构建大多数应用程序,而不需要编写本机代码。

这一点很重要,因为使用React Native,您可以始终使用本机代码。

对于Expo,我们建议尽量避免使用本地代码,如果可以的话。正如我上面提到的,我们认为,有了JavaScript可用的一套全面的API,对于大多数应用程序来说,这应该不是必要的。因此,我们的目标是提供这套全面的API,然后构建所有可以在共享本机运行时的世界中存在的令人敬畏的工具。

但是,如果您必须发现您想要下拉到本机,您可以使用eject并继续使用Expo为您提供的本机API,同时拥有与在任何本机项目中相同的控制级别。

Read more about ejecting

票数 264
EN

Stack Overflow用户

发布于 2018-03-16 23:44:24

世博会员工的文档和答案摘要:

React Native init:

优势

  • 您可以添加用Java/Objective-C (可能是唯一的但也是最强大的)编写的本机模块

缺点

  • 需要Android Studio和XCode来运行项目
  • 没有mac就无法为iOS开发
  • 设备必须通过USB连接才能用于XCode需要在XCode中手动导入
  • 如果您想共享应用程序,您需要发送整个.apk /<代码>d15文件
  • 不提供JS API,例如推送通知、资产管理器、它们需要手动安装并与npm example
  • Setting连接起来正确地建立一个工作项目(包括设备配置)是相当复杂的,可能需要时间

世博会

优势

但并非所有

  • Expo都可以构建.apk.ipa文件(可以通过Expo分发到商店)

缺点

资料来源:

票数 140
EN

Stack Overflow用户

发布于 2018-01-16 05:46:14

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

Expo扩展了React Native的API界面

React Native并没有为您提供开箱即用的所有JS API,而只是提供了大多数原始特性。React Native开发人员应该使用Android Studio/XCode来链接其他本地库。Expo旨在增强RN并提供满足最常见需求的所有JS API。它基本上是一组定义良好的、高质量的本地库,已经为您打包到一个库中: ExpoKit。有时这些库实际上已经存在于RN世界中,并集成到ExpoKit中。

同样重要的是要注意到,世博会团队不能将所有的库都包含在ExpoKit中(这可能会造成一些挫折),因为hello world应用程序的大小将会增长,因为它会提供许多不会在大多数应用程序中使用的应用程序接口。

Expo提供空中JS更新

像其他系统(CodePush...)一样,Expo提供了一个系统来无线更新你的应用程序。这意味着你将你的JS包上传到CDN上,移动应用程序将在下次启动时自动下载并使用新的JS (不需要从商店请求发布/评论)。

Expo提供CLI工具来上传/管理其CDN上的JS捆绑包。对于开发,您还可以选择成为CDN并在localhost上托管JS包。而XDE只是CLI上的一个可视化包装器。

Expo提供了一个通用客户端

世博会客户端是一个通用客户端,允许加载与世博会兼容的任何应用程序。所有的世博会应用程序都共享完全相同的本机运行时(RN + ExpoKit),唯一的区别是我们提供给它们的JS。您发布到应用商店的世博会应用程序将JS捆绑包url硬编码在其中。Expo客户端是以特定方式构建的,因此您可以通过扫描QRCode或提供url来选择从哪个url加载JS。

请注意,此客户端还可以从本地主机加载JS包,并使您的开发体验更简单:不需要XCode或Android Studio,而且在手机上运行第一个Hello World会变得更快(从几小时到几分钟)。实际上,你可以在没有Mac的情况下在iPhone上进行开发,设置只需要2分钟。

实际上,由于世博会SDK可以升级,世博会客户端包括一个兼容层,以便它能够运行最近的5个SDK版本。

Expo提供构建服务

由于所有的世博会应用程序都共享相同的本机代码,世博会能够轻松地为您构建这些应用程序。他们已经创建了一个云构建服务。

世博会创建的两个应用程序的主要区别是硬编码的url,应用程序应该将JS包下载到该url以运行。

Expo为你做了一些其他的事情,比如提供一种声明性的方式来设置应用程序图标,方向,权限,api密钥,帮助你设置推送通知,配置配置文件……许多设置必须在应用程序构建时硬编码,并且不能通过无线方式进行更改。

世博会是对Native的反应,就像Phonegap对于Cordova一样

React Native类似于Cordova。它不是相同的视图技术(原生与webview),但两者都允许你从javascript控制原生特性,并且两者都提供了一个插件系统,以便开发人员可以轻松地添加新的JS/原生绑定。

PhoneGap类似于Expo。它们都试图用一组预定义的附加原生插件来丰富它们所基于的底层平台的原始API。PhoneGap还提供了一个build service,并且有一个只要你使用批准的插件就可以工作的generic client

结论

如你所见,Expo是一套工具。最后,它允许您轻松地开发、共享和发布您的移动项目到商店。它与PhoneGap的体验非常相似(但要好得多,也不那么令人困惑)。

我肯定会推荐Expo用于任何新的React Native greenfield项目,除了这两种情况:

  • 您已经知道您需要的API在Expo中不可用,并且不会很快出现
  • 您非常关心您的应用程序大小(由于ExpoKit的大小,HelloWorld大于25mb,但之后它不会增加太多,因为它只是JS)
票数 47
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39170622

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档