Expo让web开发人员只需在JavaScript中编写一次,就可以构建真正的原生应用程序,这些应用程序可以在iOS和JavaScript上运行。
这不就是React Native所做的吗?有什么关系呢?
发布于 2016-08-27 00:21:42
当您在Expo中编写代码时,您正在编写React Native代码。世博会有两个主要部分:
expo-cli
):开发人员工具,用于创建项目、查看日志、在设备上打开、发布等。expo-cli
发布它,人们可以随时通过安卓或iOS上的世博会客户端访问它,前提是登录到发布它的同一个账户。最后,我们还可以构建独立的应用程序,这样人们就不必使用世博会客户端来打开它,如果您愿意,您可以分发到应用程序商店和play store。因此,Expo是建立在React Native之上的一组工具。这些工具依赖于在Expo上持有的一个关键信念:只要您有一套全面的API公开给JavaScript,就可以构建大多数应用程序,而不需要编写本机代码。
这一点很重要,因为使用React Native,您可以始终使用本机代码。
对于Expo,我们建议尽量避免使用本地代码,如果可以的话。正如我上面提到的,我们认为,有了JavaScript可用的一套全面的API,对于大多数应用程序来说,这应该不是必要的。因此,我们的目标是提供这套全面的API,然后构建所有可以在共享本机运行时的世界中存在的令人敬畏的工具。
但是,如果您必须发现您想要下拉到本机,您可以使用eject并继续使用Expo为您提供的本机API,同时拥有与在任何本机项目中相同的控制级别。
发布于 2018-03-16 23:44:24
世博会员工的文档和答案摘要:
React Native init:
优势
缺点
.apk
/<代码>d15文件世博会
优势
但并非所有
.apk
和.ipa
文件(可以通过Expo分发到商店)缺点
资料来源:
发布于 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项目,除了这两种情况:
https://stackoverflow.com/questions/39170622
复制相似问题