Javascript Node.js与项目结构

Javascript Node.js与项目结构,javascript,node.js,git,Javascript,Node.js,Git,我正在使用Node.js、Express、Socket.io和MySQL模块进行一个新项目,作为这些技术的初学者,我对构建项目和良好实践有一些疑问 现在,我的代码结构如下: ├── node_modules ├── package.json ├── server.js ├── server.socket.live.js # Socket.io namespace ├── server.database.js # For database configuration and connection

我正在使用Node.js、Express、Socket.io和MySQL模块进行一个新项目,作为这些技术的初学者,我对构建项目和良好实践有一些疑问

现在,我的代码结构如下:

├── node_modules
├── package.json
├── server.js
├── server.socket.live.js # Socket.io namespace
├── server.database.js # For database configuration and connection pool
├── server.database.resources.js # Model for the 'resources' table
├── server.route.live.js
└── ...
对于项目的当前状态,它工作得很好,但是代码增长很快,并且一个单独的目录将使代码难以导航和维护

因此,我一直在试图找到一种方法,用以下规则来构造我的代码:

  • 我需要全局文件,我可以从任何地方包括(例如:数据库和模型)
  • 路由和其他子组件必须相互独立
  • 节点必须能够正确缓存每个文件,因此不可能使用不同的路径(“./database.js”和“../database.js”)
  • 如果可能,避免来自父目录的请求
考虑到这一点,我提出了以下解决方案:

├── package.json
├── node_modules
|   └── ...
├── server.js
├── server
|   ├── node_modules
|   |   ├── database
|   |   |   ├── package.json
|   |   |   ├── database.js
|   |   |   ├── resources.js
|   |   |   └── ...
|   ├── socket
|   |   ├── live.js # With live subfolder if file grows too big
|   |   └── ...
|   ├── routes
|   |   ├── live.js # With live subfolder if too many sub-routes
|   |   └── ...
理论上,它工作得很好:有了这样的结构,我可以很容易地在服务器/节点_模块中添加新的“全局”模块,以及新的路由或套接字名称空间,只要它们彼此独立

所以我的问题是:这在实践中有效吗,还是有更好的方法?Node是否能够要求服务器/Node_模块中的文件具有良好的缓存?如何在git存储库中包含server/node_modules子文件夹(同时仍然忽略根节点_模块)


非常感谢

您可能希望在根级别只有一个节点\u模块。我想问
server/database/。
而不是
server/node\u modules/database/。
相关问题(可能不是重复的):@MehdiElFadil谢谢你的回答。将数据库文件夹直接放入
server/
时遇到的一个问题是,我可能需要将其放入,比如说,
server/routes/live/users.js
,这会导致类似
require('../../database/resource.js')
的难看内容。另一个问题是缓存:使用不同的require路径节点将重新加载文件,例如,我肯定不想要两个连接池。有没有一种方法可以使一个文件成为“全局”文件,而无需创建另一个
节点\u模块
?为什么一开始有两个
节点单元是个坏主意?