我需要在主app.js文件中使用mongoose一次。我可以将它传递给用户。
var mongoose = require('mongoose');
没有再加载它?在每个文件中。每当我需要相同的模块时,脚本不做额外的工作吗?
var User = require('./models/user')
答案 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);
我在创建测试实用程序文件时经常使用它,但我没有必要使用它生成。