使require()variables全局?

我是非常新的节点,我想知道是否有像自动dependency injection。 原因是我看到很多包(例如在Sails.js中)有这些全局variables,可以在任何地方使用,我想知道如何做到这一点。

现在我通过我的数据库连接和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 } }); }; 

您可以将其设置为global对象( global._ = require('lodash') )的属性,也可以不使用var_ = require('lodash') )来定义variables。

但是,正如浏览器一样,build议不要污染全球范围。 Moduling存在是有原因的!