【问题标题】:Sharing code across two separate apps in React Native在 React Native 中跨两个单独的应用程序共享代码
【发布时间】:2019-01-15 06:56:22
【问题描述】:

我目前正在开发两款 iOS 应用程序:一款用于员工,一款用于经理。

我为每个应用使用不同的目标,以便我可以重用代码(就像用户的模型一样,因为员工和经理都被视为用户并且只有不同的权限级别)。

这两个应用程序是最近才启动的,所以我正在考虑从头开始重新编写它们以使用 React Native(因为当 iOS 应用程序完成后,我将为 Android 开发确切的应用程序)。

我的问题是:使用 React Native 在两个独立的应用程序(具有不同的功能)之间共享代码有多容易?是否有为此目的而设计的功能(或库)?

到项目结束时,我将拥有四个独立的应用程序:两个用于 Android,两个用于 iOS。

我已经看到了这个问题的一些答案,但它们似乎主要适用于具有“生产”、“开发”和“暂存”目标的单个应用程序,每个应用程序基本相同。

【问题讨论】:

  • 如果他们共享许多相同的代码,您可以只创建一个应用程序并让组件根据权限以不同的方式呈现/路由。我正在构建一些非常相似的东西,它比构建两个单独的应用程序要容易得多。

标签: android ios react-native


【解决方案1】:

所以我认为您实际上可能想要的是 3 个项目。很明显,1 个员工应用程序和 1 个经理应用程序。但是你的第三个项目本质上是一个共同的组件,将在 2 个应用程序之间共享。例如,您的用户类将进入该项目。然后,当您开发应用程序项目时,您可以将公共项目作为依赖项导入(通过package.json)。这会将您的可重用类添加到您的应用项目中的node_modules,您可以通过将它们导入您的应用特定类来访问它们。

当然,您也可以采纳 Matt 的建议,构建一个应用程序,其中包含所有内容,仅根据权限为员工或经理显示不同的路线。只是取决于你想如何处理它。

【讨论】:

  • 以及如何处理那些使用本机代码的依赖项?链接将在项目 1 和 2 中完成,还是在第三个公共项目中完成?
  • 我也有同样的问题。如果您或其他人能够详细说明这种方法,以正确的方式在应用程序之间共享代码,将会很高兴。
【解决方案2】:

过去我遵循老式的方式,每个项目都有一个单独的 Git 存储库(总共 2 个)。我还创建了第三个存储库,其中包含一个包含所有公共代码的库模块(主要是组件,还有实用程序、网络相关代码等)。然后,我将此模块发布到 npm 并将其作为依赖项添加到我的 2 个项目中。

问题在于这种技术的维护成本很高。例如,在处理项目 1 时,我发现我想更改我的一个组件中的某些内容。这意味着我必须切换项目,更新库,将新版本推送到 npm,再次切换项目,用新版本更新项目 1(和 2)并继续工作,直到我发现我需要在某个地方进行另一个更改图书馆。而且这种情况发生的频率比我最初想象的要多。

前段时间我被要求再次做类似的事情。我阅读了几篇关于最佳实践的文章,并决定遵循this article 中描述的模式。总而言之,我现在有一个包含多个模块的 Git 存储库:每个功能一个,每个应用一个。我使用Lerna 来管理模块,虽然现在说还为时过早,但感觉比以前好多了。

也就是说,显然没有单一的正确答案,但对于我们的项目,在我们的 2 人团队中,这工作正常......到目前为止。

【讨论】:

  • 嘿,你还在那个项目中工作吗?近一年后它的规模如何?
猜你喜欢
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-06
  • 1970-01-01
  • 2018-07-12
  • 1970-01-01
相关资源
最近更新 更多