Javascript 如何使节点和应用程序响应共享类

Javascript 如何使节点和应用程序响应共享类,javascript,node.js,reactjs,typescript,Javascript,Node.js,Reactjs,Typescript,我正在构建一个Node和React应用程序,两者都使用TypeScript。其目录树如下所示: 我的问题: 由于我对这两个堆栈使用相同的语言,而且将来还会使用TypeScript添加React Native,所以我想知道如何创建一组用于所有堆栈的类 我为什么要这样做: DRY(不要重复自己):我的意图是充分利用在所有层中使用相同的编程语言,因此创建两个相等的类是没有意义的 到目前为止我所尝试的: 我创建了第三个名为“util”的文件夹,并放置了一个泛型类来测试这两个节点并使用它做出反应。像这样

我正在构建一个Node和React应用程序,两者都使用TypeScript。其目录树如下所示:

我的问题:

由于我对这两个堆栈使用相同的语言,而且将来还会使用TypeScript添加React Native,所以我想知道如何创建一组用于所有堆栈的类

我为什么要这样做:

DRY(不要重复自己):我的意图是充分利用在所有层中使用相同的编程语言,因此创建两个相等的类是没有意义的

到目前为止我所尝试的:

我创建了第三个名为“util”的文件夹,并放置了一个泛型类来测试这两个节点并使用它做出反应。像这样:

在Node.js中,我使用以下命令导入它:

import Person from "../../util/person.class";
import Person from "../../util/person.class";
在React.js中,我使用相同的逻辑导入它:

import Person from "../../util/person.class";
import Person from "../../util/person.class";
正如我已经预料到的,两者都拒绝使用各自根文件夹之外的文件:

我也在网上搜索了一下,我发现了一些“弹出”命令,一旦使用,就没有回头路了。我想避免这种方式。有什么方法可以让我对自己有利吗

我还想提到,我使用“tsc--init”为后端创建了一个tsconfig.json,并将rootDir设置为“/src/”,outputDir设置为“/dist/”


谢谢。

您可以设置第三个具有共享功能的项目。然后可以将共享包发布到npm存储库。然后,您可以在前端和后端项目中安装共享包。

如果要从服务器发送响应,则前端文件应位于后端文件夹下

/app root
   / back-end
      /shared-front-end-classes
      /front-end-desktop
      /front-end-mobile
虽然这不是最好的解决方案

最好的解决方案是将前端托管在不同的服务器上,并使 后端完全支持API功能

例如: 我有一个我主持的博客

前端: Github页面“支持通过小型

后端: 在Heroku主持

DB: 我正在使用mongoAtlas“云数据库”


现在您有3个独立的位置来存放所有代码

现在,对于另一个问题,您希望在两个前端上使用相同的类

对我来说,我通常用我想要的所有组件/页面制作一个小型回购,然后将其导入任何项目以供将来使用


我不确定这是否遵循了DRY的概念,但您不会编写代码两次

称之为
app lib
,并将其作为模块安装,就像其他依赖项一样,而不是通过相对路径导入单个文件。您的意思是我应该将“util”文件夹替换为“lib”?您是否有任何源代码,以便我可以阅读并将其用作模块?我的意思是,您应该使其成为自包含的模块,您通常将其称为库而不是util。要安装本地依赖项,请参见(但其他软件包管理器也有类似的规定),我喜欢您的解决方案,并将尝试一下。谢谢Bergi。甚至不需要将其发布到存储库。你好Bergi,本地依赖不是很危险吗?我的意思是,如果我不小心删除了它的代码,我想我会永远迷路的。谢谢大家的帮助。@Raphaelavarenga这就是您编写的所有代码的情况。与本地依赖项或其他无关。解决方案称为备份:-)当完成React项目时,我会构建它并将其移动到后端“public”文件夹。但是你提到的方式,前端桌面和移动设备仍然会抱怨类不在各自的文件夹中,不是吗?我想,这个类需要放在后端文件夹中。是的,我在那里添加它们的意思是将它们与那里的类一起添加。我将快速编辑我在结构中添加了一个共享类文件夹