我有一个 nodejs 项目变得相当大相当快。由于我对模块和需求的理解有限,我确信我可以做一些事情来清理代码和结构。
<app dir>
-app.js
- <modules>
-module1.js
-module2.js
- <routes>
-route1.js
-route2.js
- <utilties>
-utility1.js
-utility2.js
- <authentication>
-local.js
-basic.js
-index.js
我的 app.js 非常混乱,因为我的文件之间存在依赖关系。IE 我想将我的模型和身份验证传递给我的路由,实用程序可以被很多东西使用。
var app = express();
... // do express setup
var authenticationStrategy = // get auth strategy from config
var auth = require('./auth)(authenticationStrategy);
var utility1 = require('./utilities/utility1.js');
var utility2 = require('./utilities/utility2.js');
var utilities = {
utility1: utility1,
utility2: utility2
}
var Model1 = require('./models/model1')(utilities);
var Model2 = require('./models/model2')(utility1);
var models = {
Model1: Model1,
Model2: Model2
}
// Dynamically import all routes
fs.readdirSync('routes').forEach(function(file) {
if (file[0] == '.') return;
var route = file.substr(0, file.indexOf('.'));
require('./routes/' + route)(app, models, utilities);
});
...
etc
我现在知道我可以在每个文件夹中放置一个 index.js 来清理内容,但这仍然让我不得不保存诸如实用程序之类的内容并将其传递给其他 require 调用。
我可以将每个要求仅放在需要的较低模块中,但最终我会用我的要求爬升目录结构,这看起来也很混乱,即:
model1.js: var utility1 = require('../utilities/utility1.js');
基本上我认为我的问题是较低级别文件夹中的模块依赖于其他文件夹中的其他模块。我觉得我应该在 app.js 中引入所有依赖项并将它们传递给需要它们的 require 模块。
任何建议。几天来,我一直在尝试对其进行重组,但我只是不停地把头撞在墙上,因为我所做的任何事情都没有真正让它变得更好。
最好是一个很好的节点项目布局,它使用像猫鼬、快递、带自定义模块的东西。并展示了一种处理模块之间相互依赖关系的好方法。