使 require() 变量成为全局变量?

Make require() variables global?

我是 node 的新手,我想知道是否有自动依赖注入之类的东西。原因是我看到很多包(例如 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

models/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
    };
};

models/schemas/_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')).

但是,就像在浏览器中一样,建议不要污染全局范围。模块化是有原因的!