来自世博会网站
Expo 让 Web 开发人员只需用 JavaScript 编写一次即可构建真正的原生应用程序,这些应用程序可以在 iOS 和 Android 上运行。
这不是 React Native 所做的吗?有什么不同?
来自世博会网站
Expo 让 Web 开发人员只需用 JavaScript 编写一次即可构建真正的原生应用程序,这些应用程序可以在 iOS 和 Android 上运行。
这不是 React Native 所做的吗?有什么不同?
当您在 Expo 中编写代码时,您正在编写 React Native 代码。世博会有两个主要部分:
Expo CLI ( expo-cli
):用于创建项目、查看日志、在您的设备上打开、发布等的开发工具。
Expo 客户端:手机上的一个应用程序,可以让您在处理项目时打开项目,无需通过 XCode 或 Android Studio,还可以让其他人查看它们!如果您通过 发布它expo-cli
,人们可以通过 Android 或 iOS 上的 Expo 客户端随时访问它,前提是登录到发布它的同一帐户。最后,我们还可以构建独立的应用程序,这样人们就不必使用 Expo 客户端来打开它,并且您可以根据需要分发到应用程序商店和 Play 商店。
所以 Expo 是一套建立在 React Native 之上的工具。这些工具依赖于 Expo 持有的一个关键信念:只要您拥有一整套暴露于 JavaScript 的 API,就可以构建大多数应用程序而无需编写本机代码。
这很重要,因为使用 React Native 你总是可以下拉到原生代码。有时这非常有用,但这是有代价的:如果你想让他们测试它们,你需要将你的二进制文件发送给他们,世界另一端的人不能在你工作时点击一个链接来打开它在它上面,你不能像在浏览器中那样一键发布它,让别人访问它。
对于 Expo,如果可以的话,我们建议尽量避免使用原生代码。正如我上面提到的,我们认为有了一套可用于 JavaScript 的全面 API,对于大多数应用程序来说,这应该不是必需的。因此,我们的目标是提供这套全面的 API,然后构建可以在共享本机运行时的世界中存在的所有出色工具。
但是,如果您必须发现您想要下拉到原生,您可以使用弹出并继续使用 Expo 为您提供的原生 API,同时拥有与任何原生项目相同级别的控制。
Expo员工的文档和答案摘要:
.apk
/.ipa
文件.apk
或.ipa
文件.apk
和.ipa
归档(可以通过 Expo 分发到商店)资料来源:
Brent Vatne 的回答很好,但我想补充一些细节。
React Native 并没有为你提供开箱即用的所有 JS API,而只是提供了最原始的特性。React Native 开发者应该使用 Android Studio/XCode 来链接额外的原生库。Expo 旨在增强 RN 并提供满足最常见需求所需的所有 JS API。它基本上是一组定义明确的优质原生库,已经为您打包在一个库中:ExpoKit。有时这些库实际上已经存在于 RN 世界中,并集成到 ExpoKit 中。
同样重要的是要注意,Expo 团队不能将所有库都包含到 ExpoKit 中(这可能会造成一些挫败感),因为 hello world 应用程序的大小会增长,因为它会发布很多不会使用的 API在大多数应用程序中。
与其他系统(CodePush...)一样,Expo 提供了一个系统来通过无线方式更新您的应用程序。这意味着您将 JS 包上传到 CDN,移动应用程序将在下次启动时自动下载并使用新的 JS(无需从商店请求发布/审查)。
Expo 提供了一个 CLI 工具来上传/管理其 CDN 上的 JS 包。对于开发,您还可以选择成为 CDN 并在 localhost 上托管 JS 包。XDE 只是 CLI 上的一个可视化包装器。
Expo 客户端是一个通用客户端,允许加载任何与 Expo 兼容的应用程序。所有 Expo 应用程序都共享完全相同的本机运行时(RN + ExpoKit),唯一的区别是我们为它们提供的 JS。您发布到应用商店的 Expo 应用程序中包含硬编码的 JS 捆绑 URL。Expo 客户端以特定方式构建,因此您可以通过扫描 QRCode 或提供 url 来选择加载 JS 的 url。
请注意,此客户端还可以从 localhost 加载 JS 包,让您的开发体验更轻松:无需 XCode 或 Android Studio,而且在手机上运行您的第一个 Hello World 变得更快(从几小时到几分钟)。您实际上可以在没有 Mac 的情况下在 iPhone 上进行开发,并且设置需要 2 分钟。
实际上,由于 Expo SDK 可以升级,Expo 客户端包含一个兼容层,因此它能够运行最新的 5 个 SDK 版本。
由于所有 Expo 应用程序共享相同的本机代码,Expo 能够轻松地为您构建这些应用程序。他们创建了一个云构建服务。
Expo 构建的 2 个应用程序的主要区别在于应用程序应该下载 JS 包以运行的硬编码 url。
Expo 为您做了其他一些事情,例如提供一种声明性方式来设置应用程序图标、方向、权限、api 密钥、帮助您设置推送通知、配置文件……许多设置必须在构建时在应用程序中进行硬编码,并且可以不要在空中改变。
React Native 与 Cordova 类似。它不是同一种视图技术(native vs webview),但两者都允许您从 javascript 控制本地功能,并且都提供插件系统,以便开发人员可以轻松添加新的 JS/native 绑定。
PhoneGap 类似于 Expo。他们都试图通过一组预定义的附加原生插件来丰富他们所构建的底层平台的原始 API。PhoneGap 还提供构建服务,并有一个通用客户端,只要您使用批准的插件,它就可以工作。
如您所见,Expo 是一套工具。最后,它允许轻松开发、共享和发布您的移动项目到商店。它与PhoneGap 体验非常相似(但要好得多,也不会令人困惑)。
除了以下两种情况外,我将明确推荐 Expo 用于任何新的 React Native 绿地项目:
优点:
缺点:
.apk
和.ipa
文件是困难的。优点:
.apk
比.ipa
使用 Expo 容易得多注意:React Native CLI 是用于直接使用 React Native 框架的框架。
缺点:
如您所见,这两种方法各有利弊。您应该始终根据您对项目的需求来决定使用哪个。
关于 expo 和 react-native-cli 的优缺点的答案是完整的。我想提一点作为我的个人经验。Expo 默认在项目中包含许多模块,并且使用它更容易。但它在生产阶段有一个很大的问题,因为构建android
和ios
版本的大小如此之大。'Hello World'
例如,如果您有一个apk
文件大小约为19 MB
. 在 react-native-cli 中拥有相同的项目将导致应用程序的大小为6 MB
.
因此,如果您想开发商业应用程序,我个人不建议使用 expo。
我会在此说明 Expo 使用的是较旧版本的 react 16.5,这将禁止您使用新的钩子功能。如果您决定使用 Expo,请注意查看您的版本控制。如果您遇到奇怪的错误,则需要将旧版本的 say react-navigation 与 16.5 版本一起使用。
expo 是一个围绕 React Native 构建的工具链,可帮助您快速启动应用程序。它提供了一组工具来简化 React Native 应用程序和接口和服务的开发和测试,这些工具通常在第三方原生 React Native 组件中可用。使用 Expo,您可以在 Expo SDK 中找到所有这些。
我已经经历了一年多的与 expo 合作的经历Google Play 或其他商店中的应用程序您在删除 APK React-native 中的某些权限时遇到挑战您可以更改所有内容,但导入一些库(例如推送通知或地图)也需要一些挑战,因为您必须手动将这些库添加到安卓和iOS项目
Expo 是 react native cli 的包装器,它在底层做一些事情以方便开发人员,expo 解决的最常见问题,开发人员不必担心 react native cli 中经常出现的库的链接问题。Expo 现在提供了大量的库,它们对稳健的开发非常有帮助。expo 的好处之一是您可以通过 expo 移动应用程序开发适用于 android 和 ios 的应用程序,而无需使用 mac。
因为它有很多好处,所以使用 expo 有一些缺点