除了在每个模型文件中包含require(' mongoose')之外,还有更好的方法吗?

时间:2015-04-26 04:24:58

标签: javascript node.js express mongoose

我需要在主app.js文件中使用mongoose一次。我可以将它传递给用户。

var mongoose = require('mongoose');

没有再加载它?在每个文件中。每当我需要相同的模块时,脚本不做额外的工作吗?

var User = require('./models/user')

2 个答案:

答案 0 :(得分:3)

来自节点文档

模块在第一次加载后进行缓存。这意味着(除其他外)每次调用require('foo')将获得完全相同的返回对象,如果它将解析为同一个文件。

多次调用require('foo')可能不会导致模块代码多次执行。

看看Caching

仍然可以全局要求mongoose模块。而不是var mongoose = require('mongoose');只写mongoose = require('mongoose');。然后,您将能够从任何其他模块访问mongoose。

答案 1 :(得分:0)

如果您正在使用coffeescript,那么您必须显式添加到globals对象。

在utils文件中,全局需要您需要的所有内容:

//utils.js

globals['mongoose] = require('mongoose');
globals['fs'] = require('fs-extra');

现在,在所有脚本中,您只需要要求utils文件。 :

require('./utils');

console.log('fs is ' + fs);
console.log('mongoose is ' + mongoose);

我在创建测试实用程序文件时经常使用它,但我没有必要使用它生成。