React Native

时间:2016-05-12 10:52:23

标签: reactjs react-native multi-tenant

我们如何在React原生中支持多租户?就像具有相同代码库的多个构建一样。

  • 在iOS中,我们可以制作多个目标,以支持具有相同代码库的多个构建。
  • 对于Android,我们可以为此追踪提供gradle配置

但不确定我们如何才能在本地做出反应。

1 个答案:

答案 0 :(得分:4)

使用React Native时,您可以将项目结构作为iOS和Android项目的一部分。这些是正常的" XCode和Android项目在某种意义上说它们没什么特别之处,React作为一个库包含在内。

因此,您可以使用XCode打开React Native CLI生成的项目,并像往常一样定义构建目标。作为参考,在这里您可以看到他们用来在iOS上使用cli运行项目的nodejs脚本: https://github.com/facebook/react-native/blob/master/local-cli/runIOS/runIOS.js 如果你需要做一些更复杂的事情,你可以随时使用该代码作为参考,并自己调用xcodebuild / xcrun。或者只是你可以直接从XCode运行ReactNative项目。

关于Android,在" android"您的React Native项目的目录中,您将找到几个.gradle文件,您可以再次调整以满足您的需求。

由于您的react本机项目结构的ios和android文件夹通常都保持在版本控制之下,因此您可以轻松跟踪这些配置。

我认为这种方法与Cordova / ionic建议的方法不同,其中本地项目通常被忽略并通过cli按需重建(例如在CI上)。

澄清后更新

如果您对每个版本的应用程序都有不同的配置,那么您可以使用以下选项:https://www.npmjs.com/package/react-native-config,它允许您指定和导入配置并在任何地方访问它们,js和native侧。

如果您有不同的逻辑和代码,而不仅仅是简单的配置,一个选项是将您的应用程序组件拆分到不同的子文件夹,然后使用一些命名约定动态导入该版本的特定组件。

例如,如果每个客户都有不同的HomePage组件,则可以创建customer1 / Home.js文件夹并使用

动态导入该组件

const Home = require('./' + Config.customerName + '/Home.js')

您还可以检查是否定义了Home,然后退回并需要默认实现。

如果代码库在不同版本之间存在很大差异,我认为您应该考虑采用不同的方法:而不是构建"一个版本来统治它们所有"您可以将共享组件和逻辑提取到单独的npm包中,为应用程序提供独立版本和构建,并引用通用包。

根据您的情况,从长远来看,这种方法可能更简单,因为如果您真的需要,您可以更自由地偏离默认实现(例如,具有疯狂要求的客户端),并且结构将更加模块化,而不必使一切复杂化。

希望我对此有所帮助,显然没有单一的方法或通用的解决方案,因为它非常依赖于你的场景。

相关问题