使用dependency injection的Node.js应用程序示例

我真的很喜欢dependency injection是如何完成的,所以我想在节点中使用类似的模式。 有很多模块往往是DI容器,不容易select。

在节点中使用DI有真实世界的例子吗? 在这种情况下如何构build应用程序?

我有一个非常性感的嘲笑testing的答案,然后我重新读你的问题,…呃。

整个exports / require机制提供了dependency injection,你可以通过简单的改变require('module')指向新require('module')来模拟或者换出任何你需要require('module')

您甚至可以包装任何您可能想要切换的替代API兼容库集。 例如,如果您在决定从下划线移动到lodash时正在接近精神崩溃,那么您可以创build一个名为“underdash.js”的模块:

 if (process.env.COLD_SWEATS || process.env.SHAKING || process.env.PALPITATIONS) { module.exports = exports = require('underscore'); } else { module.exports = exports = require('lodash'); } 

然后当你需要它的时候,只require('./underdash') ,现在你不必关心你实际使用哪个下滑的库,并且可以在开关的翻转处改变它 – 只要API是相同的,否则你会有一个糟糕的时间

我开发并一直在使用系统性的生产一年。 这是一个电工的重写,为TES (重node.js用户)开发。 两者都比angular度的DI机制更不可思议。 你也可能喜欢diogenes 。

这里有一个系统应用的例子。