我是 React Native 的新手,我想知道如何在服务器上部署 react native 部分或代码(如 javascript 文件和资产)然后使用它。
目前它显示为 localhost
请让我知道如何在服务器上部署它是否可能。
每次更改代码的反应部分时,是否需要更新 Play 商店中的应用程序?
代码推送到底做了什么,有什么方法可以从服务器加载我的反应原生包并动态更新应用程序
我是 React Native 的新手,我想知道如何在服务器上部署 react native 部分或代码(如 javascript 文件和资产)然后使用它。
目前它显示为 localhost
请让我知道如何在服务器上部署它是否可能。
每次更改代码的反应部分时,是否需要更新 Play 商店中的应用程序?
代码推送到底做了什么,有什么方法可以从服务器加载我的反应原生包并动态更新应用程序
React-native 编译为两种本地语言。实际上,您有 2 个应用程序,其中没有一个是 Web 应用程序。
您可以在服务器上拥有远程图像资产,并使用 react-native 代码中的 URL 与缓存相结合(因此您不必每次都下载资产)。
考虑到 JavaScript 文件,我会说不。除非您创建服务器并通过 API 调用请求该功能。
不,您不必每次都与 Play 商店互动,但通常您会这样做 :)
我认为您需要了解 React Native 的工作原理才能理解。
RN 实际所做的是将原生 API 暴露给您的 Javascript 代码库。基本上,一个 RN App 由两部分组成:
正如您可以想象的那样,Native部分是编写的所有内容,Swift/ Objective-C/ Java
并且如果不通过 App Store,您就无法更新该部分。
现在有趣的是JS部分,记得我们说过基本上你是在用 JS 使用原生 API。如果您在运行react-native run-ios
或react-native run-android
实例化服务器时注意到该服务器为您的模拟器/物理设备提供捆绑包。
现在,如果您基本上在打开应用程序时考虑一下,捆绑包会被下载然后运行。当您在应用程序在模拟器上运行时更新您的代码库时,服务器会通过套接字发送一个信号以通知客户端有可用的更新。此时,客户端下载捆绑包并重新加载应用程序。
现在回答您的问题,是的,您可以在您的服务器上提供 JS 捆绑包,并让应用程序检查何时加载或恢复是否有新版本的 JS 捆绑包可用,如果有,请下载它(OTA 更新)。正如您所理解的那样,只有 Javascript 部分可以以这种方式进行更新,而本机部分也不能。
再说一次,有一些服务已经这样做了,比如 MS 的 codepush。
您可以使用code-push cli或appcenter cli将您的 Javascript 代码发布到云服务器(由 Microsoft 托管),并使用react-native-code-push在您的 RN 应用程序中检索更新。
或者,您可以使用自带无线 (OTA) 更新功能的Expo 。
上述两个服务都在内部为您管理它们的服务器,并且不允许您在自己的服务器上托管 JS 包(尽管有一个功能请求)。
请注意,只有对 Javascript 代码库的更改才能通过 OTA 交付。对本机代码(例如 Swift/Java)的任何更新仍必须通过 App Store/Google Play 交付。