使用Expo SDK的React Native真的是原生的?!或者像科尔多瓦一样



我是 React Native 的新手,我知道有两种方法可以使用 react native 开发原生应用程序

1-反应原生初始化-->需要编译原生编码 ==> 结果是 Android 的原生应用程序"需要 Android SDK"和 IOS 的原生应用程序"需要 Xcode">

2-创建反应原生应用程序-->无需编译原生代码!

因为 CRNA 使用 Expo_SDK 访问本机 API,但是:

结果应用程序真的是原生的!或者Expo Sdk就像Cordova,但被React使用,如果结果是原生的,世博会声称结果是原生的!,他们是否克隆了Android Sdk和Xcode的IOS,或者它是如何工作的?!

世博会应用程序是包含世博会 SDK 的 React Native 应用程序。SDK 是一个本机和 JS 库,提供对设备系统功能(如相机、联系人、本地存储和其他硬件)的访问。这意味着你不需要使用Xcode或Android Studio,也不需要编写任何原生代码,这也使你的纯JS项目非常便携,因为它可以在任何包含Expo SDK的原生环境中运行。

Expo 还提供了 UI 组件来处理几乎所有应用程序都将涵盖但未融入 React Native 核心的各种用例,例如图标、模糊视图等。

最后,Expo SDK提供了对服务的访问,这些服务通常很难管理,但几乎每个应用程序都需要。其中最受欢迎的是:Expo 可以为您管理您的资产,它可以为您处理推送通知,并且可以构建准备部署到应用商店的本机二进制文件。

你应该看看世博会文档

Expo 应用程序与 React 原生一样原生。他们执行以下操作,因此您无需在本地设置Android/iOS SDK。

  1. 在安卓/iOS上提供世博应用程序

    所以你可以构建JS代码,并在开发过程中使用世博应用进行调试。

  2. 提供构建服务器

    运行expo build命令后,expo将上传编译的JS代码并在其服务器上构建Android/iOS文件。您可以从他们的服务器下载构建的文件。

您可以从世博会eject,在本地设置 Android/iOS SDK,并像普通的 React Native 应用程序一样构建应用程序

世博会(和 react-native)应用程序使用本机(Android 和 iOS)UI 组件来呈现应用程序 UI,就像任何本机 Android 或 iOS 应用程序一样。因此,它们可以被视为本机应用程序。

但是,您的应用逻辑是在 javascript 线程中执行的,该线程将与本机线程(通过 react-native 桥接)通信以修改本机 UI 组件。由于桥是完全异步的,因此不会影响应用程序的本机 UI 性能。如果你想了解js和本机代码之间的通信,阅读本指南可能是一个好的开始。

2-创建反应本机应用程序-->无需编译本机代码!

使用 expo 不需要编译本机代码,因为 expo 已经包含一个"即用型构建"的 react-native 以及其他几个常见的 react-native 库。在 expo 应用程序中,这将与您的 javascript 捆绑包一起使用,后者通过 react-native 桥与已经存在的本机部分进行通信。

他们基本上只是滥用这样一个事实,即您可以将不同的javascript捆绑包注入到预构建的react-native应用程序中(只要您仅使用访问该预构建应用程序的本机功能的子集)

请注意,Appcenters codepush 使用相同的功能,它们的安装集成实际上提供了一个很好的例子,如何在不接触本机部分的情况下加载不同的 javascript 包:

在 iOSAppDelegate.m中,此行已更改:

原始的 react-native js 包加载,它总是解析静态捆绑包

return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];

使用代码推送加载JS包,可以解析为不同的JS-bunldes。

return [CodePush bundleURL];

链接到完整的代码推送 ios 集成指南

相关内容

最新更新