我有基于express+mongoose的后端.文件 struct 为:

- /models
-- item.js
- /node.modules
-- ...
- server.js
- package-lock.json
- package.json

以及为前端创建基于应用程序的常规文件夹:

- /src
-- /assets
--- index.css
-- /components
--- Somecomponent.js
-- /containers
--- App.js
-- /reducers
--- somereducers.js
- /node.modules
-- ...
-- index.js
-- registerServiceWorker.js
- .gitignore
- package-lock.json
- package.json

我想以适当的方式一起使用它.我想这样组织:

- /client 
-- /src
...
-- index.js
-- registerServiceWorker.js
- .gitignore
- package-lock.json
- package.json

- /server
- /models
-- item.js
- /node.modules
-- ...
- server.js
- package-lock.json
- package.json

在这个阶段我卡住了.如果客户端文件夹在服务器文件夹中,或者如果服务器文件夹在客户端中,我可以将其设置为.

推荐答案

最基本的 struct 是一个root文件夹,其中包含frontendbackend个文件夹.既然你说的是MERN堆栈,那么在104后端环境中就有package.json,在106端就有package.json.后端服务器和前端客户端是两个完全不同的东西,所以是的,它们都有自己的 node 模块文件夹.在后端,你可能已经为你的 node 运行时安装了Express,为更方便地与你的MongoDB通话安装了Mongoose,等等.在前端,你将使用React作为前端框架,Redux用于状态管理,等等.此外,这取决于你已经在包中列出的内容.json文件,当您运行npm install separately时,它将安装在这两个文件夹中.如果你想安装额外的软件包,只需在需要它的特定文件夹(后端或/和前端)中运行npm install + "the name of the package"(不带"+"和引号).

我希望这是有帮助的.看看照片,尤其是第二张.

App structure
enter image description here

Folder structure

enter image description here

UPDATE:

在开发中,我建议安装两个额外的东西:

  1. 100
  2. 100

注:-D标志将安装为101.

100将跟踪每个文件更改,并为您重新启动后端服务器.所以,很明显,它应该安装在"backend"文件夹中.你所要做的就是进入package.json文件(后端)并添加一个新脚本.比如:

"scripts": {
"start": "node app.js",  // in production
"dev": "nodemon app.js", // in development
}

100允许您同时启动前端和后端.我建议在顶级root文件夹中初始化一个新的 node 项目-[包含前端和后端的文件夹].您可以使用npm init命令来实现这一点,然后在那里安装concurrently软件包.

现在,打开root文件夹中新创建的package.json文件,编辑开始部分,如下所示:

   "scripts": {
       "dev": "concurrently \"cd backend && npm run dev\" \"cd frontend && npm start\" "
   }

这将做的是进入backend文件夹并运行dev命令(the same one we just configured),这样将启动nodemon.此外,它还将进入frontend文件夹并运行默认的start命令——这正是我们想要的.

如果您保持文件夹 struct ,安装了所有依赖项(包括我上面提到的另外两个),更改了101文件夹中的package.json文件,则可以通过一个简单的命令启动这两个文件:

100//执行此操作时,请确保您位于根文件夹内:)

Node.js相关问答推荐

Node.js分页返回空数组

使用参考中断Mongoose模型-Node.js

在对象的嵌套数组中使用$lookup,创建多个记录作为响应,mongodb

npm错误;无法解析依赖项:npm ERR!对等webpack@;5.x.x;来自@webpack-cli/serve@2.0.5";

在 puppeteer 中从 pdf 中删除 about:blank 和 date-time

在生产环境中,Nest实例启动时抛出不完整的导入错误

MongoDB - 查找查询以判断是否存在少量字段,结合字段上的 AND

使用react 组件加载特定 DIV 而无需重新加载整个页面

如何为单个 mongo nodejs 驱动程序找到最佳连接池大小

将环境变量从 GitHub 操作传递到 json

Mongodb聚合传递一个匹配的数组和一个不匹配的数组

为什么我的 Heroku Express API 数据是持久的,即使它只是来自一个变量

如何让我的 Next.js 应用在运行 ubuntu-latest 的 Azure 应用服务中启动?

Node.js 大文件上传到 MongoDB 阻塞了事件循环和工作池

使用 $in 查询时,如何获取 mongoDB 中每个唯一 ID 的 n 个文档?

响应发送 200 而不是 403

JSHint 是否支持异步/等待?

create-react-app,安装错误(找不到命令)

如何在 node 中转义 shell 命令的字符串?

在 Node.js 中写入 CSV