在2个独立项目React Js和React Native之间共享代码的最佳解决方案? (例如redux商店)

时间:2019-01-25 13:30:50

标签: javascript reactjs react-native react-redux

对于一个项目,我们需要有一个网站和一个移动应用程序(而不是响应式网站),这两个网站都将占用我的API。我以前使用过React,因此我在移动应用程序部分检查了很多有关React-Native的信息。

据我所知,这需要创建2个不同的项目,并且这样做似乎更有效率(此外,如果这2个项目不共享同一客户)。问题是,乍看之下,两者都将使用同一家商店。。。我不想复制我的商店,也不希望每次更新API时都更新它们。我看到的 React 网站和 React Native 应用之间的唯一区别是它们的呈现方式。它们都将具有相同的功能。我们可以进一步假设它们也将共享相同的容器吗?

我尝试在github上打开一个问题,但他们将我重定向到此处进行讨论。

所以我想知道你们是否拥有最好的解决方案(干净且无意外)在React和React Native之间共享代码?如果是这样,将非常感谢您学习教程。

(注意:搜索非常耗时,React Native文档应该保留有关此主题的部分...)

1 个答案:

答案 0 :(得分:-1)

这在this thread中得到了回答。

总体思路是,每个平台具有不同的入口点,并让平台特定的代码(用于Web的React和用于移动的React Native)共享Redux存储之类的通用代码。

在我链接的线程中也可以找到深入的article

话虽这么说,但是这个想法有很多折衷和陷阱,其中之一就是依赖性管理,正如您从链接文章的注释中看到的那样:

  

我刚刚了解了这种结构的缺点。通过在本机和Web之间共享一个通用的package.json,您已通过它们的通用依赖关系将它们粘合在一起,其中最重要的是做出反应。假设您升级到依赖于> = react @ 16的react-native版本,但是您的Web应用依赖于依赖于=

另一种可行的方法是将公共代码区转换为库,您可以将其导出并将其导入到每个单独的项目(移动和Web)中。这样,您就可以避免第一个选项的问题,但是现在您仍然必须维护和更新两个单独的代码存储库。

要回答您的问题,请提出以下评论:我认为在两个平台上拥有一个项目共享代码没有什么错,但是必须非常仔细地计划,这样您在尝试添加新项目时就不会破坏两个项目东西。尝试从规划您的项目结构开始,以便在Web代码和移动代码之间清晰地分开,并检查您的依赖项是否相互兼容。

这是一个blog post,其中有一个示例项目,可以帮助您设计项目。

编辑:您可以尝试React Native Web,但是它仍然处于测试阶段,因此我不建议在与工作相关的项目中使用(尽管对于学校/个人项目也可以)。 / p>