3

我开始为 iOS 和 Android 构建一个反应原生应用程序。我已经阅读了 react native 应用程序的文档,但是现在我不明白一件事:

react-native 应用程序是完全原生应用程序吗?

他们用 react-native 说,会的。那我为什么要问这个问题?好吧,我找到了通过https://github.com/Microsoft/react-native-code-push提出问题的原因。根据代码推送,他们能够动态更新应用程序。这是通过更新应用程序的 javascript 部分来完成的。但是等等,如果应用程序是真正的原生应用程序,那么在应用程序的最终版本中不应该有任何 javascript,对吗?那么他们是怎么做到的呢?他们是在代码推送服务器上编译应用程序,然后将编译后的应用程序发送给用户还是什么?这真的让我担心,react-native 应用程序真的不是完全原生的应用程序。

CodePush 插件通过使您的 JavaScript 和图像与您发布到 CodePush 服务器的更新保持同步,帮助您立即在最终用户面前改进产品。通过这种方式,您的应用程序将获得离线移动体验的好处,以及在更新可用时立即侧载更新的“类似网络”的敏捷性。这是双赢的!

另外,我对此表示怀疑的原因是因为他们还在代码推送文档中说,他们无法更新 react-native 应用程序的本机部分:

注意:任何涉及本机代码的产品更改(例如修改您的 AppDelegate.m/MainActivity.java 文件,添加新插件)都不能通过 CodePush 分发,因此必须通过适当的商店进行更新。

如果 react-native 应用程序完全是原生的,那么最后,所有代码都应该是原生代码。所以我真的不明白为什么更新本机本机代码比已编译为本机的代码更难?

4

1 回答 1

2
  • 如果您只更改/src/文件夹中的代码(JS 代码)并且添加本机模块,您可以使用CodePush来更新您的应用程序。

  • 如果您更改/src/文件夹中的代码(JS 代码)添加一些原生模块,则无法使用CodePush更新您的应用程序。

您的 JS 代码由本机组件编译和读取。这就是你可以更新 JS 层的原因。

如果您查看您的 .ipa 文件并打开 main.jsbundle (需要取消缩小),您可以看到您的 JS 代码。例子:

在此处输入图像描述

于 2017-01-27T07:18:52.957 回答