Node.js和依赖关系管理

时间:2014-06-05 14:24:40

标签: javascript node.js express dependency-injection dependency-management

以下是我关注的问题:

我正在使用express 4在Node.js中编写一个webapp。

问题是在所有代码中管理dependecies,但让我给你举个例子。我管理这样的依赖:

server.js:

var express = require('express');

var app = express();

app.use('/auth', require('./routes/auth'));
app.use('/profile', require('./routes/profile'));

路由/ auth.js:

var express = require('express');

var router = express.Router();
// add routes to router
module.exports = router;

路由/ profile.js:

var express = require('express');

var router = express.Router();
// add routes to router
module.exports = router;

你怎么看,我每次在每个模块中需要时都要输入快递。我用快递向您展示了示例,但我正在使用其他模块。

如果我管理这样的依赖关系会更好吗?

server.js:

var express = require('express');
var app = express();

app.use('/auth', require('./routes/auth')(express));
app.use('/profile', require('./routes/profile')(express));

路由/ auth.js:

module.exports = function (express) {
    router = express.Router();
    // add routes to router
    return router;
}

路由/ profile.js:

module.exports = function (express) {
    router = express.Router();
    // add routes to router
    return router;
}

我不得不承认,我的怀疑是由于我对Javascript和Node.js的不了解以及我对Python的背景,我们喜欢第一种形式。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

性能没有真正的区别,因为Node.js'require在第一次调用时缓存每个模块。然而,第二种方法具有显式依赖注入的好处,即i.E。您可以通过提供模拟版本的express来测试更高隔离度的每个模块。此外,您已准备好提供其他依赖项,如配置或数据库对象。