Node.js和项目结构

我正在使用Node.js,Express,Socket.io和MySQL模块开发一个新项目,并且正在使用这些技术作为初学者,关于构build项目和良好实践,我有几个问题。

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

├── 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 └── ... 

对于项目的当前状态,它工作得很好,但代码增长速度很快,唯一的目录将使代码很难导航和维护。

所以我一直在试图找出一种方法来构build我的代码与以下规则:

  • 我需要全局文件(例如:数据库和模型)。
  • 路线和其他子部分必须是(而且)是相互独立的。
  • 节点必须能够正确地caching每个文件,所以不同的path('./database.js'和'../database.js')是不可能的。
  • 如果可能的话,避免从父目录需要。

考虑到这一点,我想出了这个解决scheme:

 ├── 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 | | └── ... 

从理论上讲,它的效果很好:通过这样的结构,我可以轻松地在server / node_modules中添加新的“全局”模块,以及新的路由或套接字名称空间,只要它们彼此独立。

所以我的问题是:这是否会在实践中发挥作用,还是有更好的方法呢? 请问节点能够要求具有良好caching的server / node_modules中的文件? 如何在我的git存储库中包含server / node_modules子文件夹(仍然忽略根节点模块)?

非常感谢!