使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存在是有原因的!