我的express.js 应用程序中有一个文件夹,其中包含三个文件:
// models/one.js
exports.One = function() { return 'one'; }
// models/two.js
exports.Two = function() { return 'two'; }
// models/three.js
exports.Three = function() { return 'three'; }
我希望能够像这样使用它:
var db = require('./models');
doSomething(db.One, db.Two, db.Three);
换句话说,我想将多个文件的导出分组到一个变量中。
我知道默认情况下 require 语句将查找 models/index.js。我可以在 index.js 中放入任何内容,以允许它继承目录中其他文件的导出,例如(非工作伪代码):
// models/index.js
exports = require('./one.js', './two.js', './three.js);
想法?谢谢!
参见Customizing existing Module寻求解决方案。
或者您可以加载目录中的所有文件,例如
a.js:
exports.a = 1;
b.js:
exports.b = 2;
index.js:(这将需要同一目录中的所有 .js
文件并将它们捆绑到单个对象)
var fs = require('fs')
, path = require('path')
, bundle = {}
, i
, k
, mod;
fs.readdirSync(__dirname).forEach(function(filename) {
if (path.extname(filename) == '.js' &&
path.resolve(filename) != __filename) {
mod = require(path.resolve(path.join(__dirname, filename)));
for (k in mod) {
bundle[k] = mod[k];
}
}
});
module.exports = bundle;
需要您将看到的目录
{ a: 1, b: 2 }
我是一名优秀的程序员,十分优秀!