【问题标题】:React Native adding and remove packages as features or plugin at runtimeReact Native 在运行时添加和删除包作为功能或插件
【发布时间】:2021-08-13 07:48:55
【问题描述】:

我正在为企业构建一个模块化的 React Native 应用程序,它需要添加或删除包作为功能或插件(无需更新应用程序)。下面应该是一个过程

  1. 企业用户应在手机中下载并安装基础移动 Android/iOS 应用(内置 React Native)
  2. 应从后端为一个企业配置多个包或功能(可能与其他企业有所不同)
  3. 多个预构建的包/模块应保存在后端的商店中
  4. 企业用户应使用上述步骤 1 后步骤 2 自动获取包作为移动应用程序中的功能

我没有任何问题处理和构建后端和反应原生应用程序。我正在苦苦思索如何在基于后端配置的现有基础移动应用程序中动态添加/删除包。

【问题讨论】:

  • 我不知道你在问题中所说的过程或可行性。但是你不能直接在 react native 应用程序中烘焙大部分功能/插件,然后根据你的业务逻辑启用或禁用它。假设您在应用程序内部有聊天模块,但最终用户看不到它,直到或除非您从后端启用它?这应该对您的情况有所帮助,并且更新移动应用程序是向用户部署更新的首选方式。
  • @SahilManchanda 您的建议可以工作,但我担心它会增加应用程序的大小。如果在启用相关功能时将模块捆绑包动态添加到应用程序中,那将会很好。它需要探索 react-native-bundle-splitter 或下面 Bojke 建议的重新打包是否可以帮助解决这个问题。
  • 通过查看复杂性级别和在更长时间内易于管理,这种权衡似乎没问题,但最终由您决定。祝你好运。如果您取得任何成功,请发布这些步骤作为答案,以便其他人也可以受益:)
  • @SahilManchanda 希望 Expo 也这样做,以便在其基本代码中运行新代码。你有什么想法吗?
  • 好问题!我不知道 expo 如何能够通过无线方式运行示例。我会在周末尝试对这个主题进行一些研究。

标签: react-native


【解决方案1】:

如果这些包/功能只有 javascript,您可以尝试codepush。这将允许更改 js 包运行时。查看此部分:Dynamic Deployment Assignment

但是,如果这些包需要本地实现,唯一的解决方案就是拆分您的代码。这样,您将需要在 apk 中发布每个包,但主包将仅包含“基本”应用程序的代码,而具有附加功能的其他代码将在运行时加载。这也将带来巨大的性能提升。 您可以通过按角色或其他有条件地呈现屏幕来轻松控制哪个用户看到什么。

对于代码拆分,您可以查看以下存储库: react-native-bundle-splitterrepack

【讨论】:

  • 能否请您用一个非常基本的代码分享更多细节。
  • 嗯,不是真的。您可以查看每个 repo 的示例应用程序/自述文件,并决定哪一个最适合您。也许最容易实现的是react-native-bundle-splitter,但据我所知,这只能根据屏幕拆分代码(我自己从未尝试过)。 Repack 仍处于测试阶段,但非常有前途,不幸的是它非常复杂并且需要高级 webpack 知识。祝你好运?
猜你喜欢
  • 1970-01-01
  • 2021-06-23
  • 2012-02-24
  • 2022-11-02
  • 2023-04-11
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多