使用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 。
这里有一个系统应用的例子。
- 在opentok示例中找不到模块“ejs”
- NodeJS / ExpressJS在1个stream中发送大量数据的响应
- Yeoman – 当前使用AngularJS&Express的最佳方式?
- angular度抛出错误$ parse:ueoe意外的expression式结尾
- 我如何开始使用MEAN.IO?
- 在package.json中包含依赖性时遇到问题
- 从node.js服务器运行angular度
- browserSync的modRewrite不适用于angularjs html5mode的path“app / index.html”与吞咽
- PUT /更新操作在$资源AngularJS客户端在基于rest的应用程序(mongoose插入/更新问题)失败。