gpt4 book ai didi

javascript - 如何让文件继承node.js/express.js中的导出?

转载 作者:太空宇宙 更新时间:2023-11-04 01:15:53 25 4
gpt4 key购买 nike

我的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 }

关于javascript - 如何让文件继承node.js/express.js中的导出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8890071/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com