相关疑难解决方法(0)

为什么动态语言不需要IOC容器

第68号羊群编号播客中的某人,http://herdingcode.com/herding-code-68-new-year-shenanigans/,声称IOC容器没有Python或Javascript的地方,或者说是这样的话.我认为这是传统智慧,它适用于所有动态语言.为什么?动态语言是什么让IOC容器变得不必要?

dynamic-languages ioc-container

42
推荐指数
4
解决办法
8181
查看次数

节点中的Javascript依赖注入和DIP:需求与构造函数注入

我是来自.NET世界的NodeJs开发的新手,我正在网上搜索有关在Javascript中对DI / DIP进行降级的最佳实践。

在.NET中,我会在构造函数中声明我的依赖关系,而在javascript中,我看到一个常见的模式是通过require语句在模块级别声明依赖关系。

对我来说,当我使用require时,我会耦合到特定文件,同时使用构造函数来接收我的依赖项更加灵活。

您会建议采用javascript的最佳做法吗?(我正在寻找架构模式,而不是IOC技术解决方案)

搜索网络时,我遇到了此博客文章(评论中有一些非常有趣的讨论):https : //blog.risingstack.com/dependency-injection-in-node-js/

它使我的冲突非常好。这是博客文章中的一些代码,可让您了解我在说什么:

// team.js
var User = require('./user');

function getTeam(teamId) {  
  return User.find({teamId: teamId});
}

module.exports.getTeam = getTeam; 
Run Code Online (Sandbox Code Playgroud)

一个简单的测试如下所示:

 // team.spec.js
    var Team = require('./team');  
    var User = require('./user');

    describe('Team', function() {  
      it('#getTeam', function* () {
        var users = [{id: 1, id: 2}];

        this.sandbox.stub(User, 'find', function() {
          return Promise.resolve(users);
        });

        var team = yield team.getTeam();

        expect(team).to.eql(users);
      });
    });
Run Code Online (Sandbox Code Playgroud)

VS DI:

// team.js
function Team(options) {  
  this.options = options;
}

Team.prototype.getTeam …
Run Code Online (Sandbox Code Playgroud)

.net javascript dependency-injection node.js dependency-inversion

4
推荐指数
2
解决办法
862
查看次数