我对节点很新,我想知道是否有类似自动依赖注入的东西。原因是我看到很多软件包(例如在Sails.js中)都有这些可以在任何地方使用的全局变量,我想知道如何做到这一点。
现在我正在为每个模型传递我的数据库连接和ORM,我想知道如何避免它。另外,例如,我希望lodash _
是全球性的,所以我不会在我使用它的每个文件中都要求它。
app.js
var sequelize = require('sequelize');
var db = new sequelize('mysql://root:password@localhost/testDb');
var models = require('./models')(db, sequelize); // I don't want to pass them around
模型/ index.js
'use strict';
module.exports = function(db, sequelize) {
return {
users: require('./schemas/_user')(db, sequelize) // again I'm passing here, I don't want to
};
};
模型/模式/ _user.js
'use strict';
module.exports = function(db, sequelize) { // And here I finally actually am *using* those variables
return db.define('users', {
id: {
field: 'id',
type: sequelize.INTEGER(11).UNSIGNED,
primaryKey: true,
autoIncrement: true
},
email: {
field: 'email',
type: sequelize.STRING,
allowNull: false,
unique: true
}
});
};
答案 0 :(得分:2)
您可以将其设置为global
对象(global._ = require('lodash')
)的属性,也可以只使用var
(_ = require('lodash')
)定义变量。
然而,就像在浏览器中一样,建议不要污染全局范围。 Moduling存在是有原因的!