gpt4 book ai didi

javascript - 在 Node js中将多个文件导出为单个模块

转载 作者:数据小太阳 更新时间:2023-10-29 04:13:15 24 4
gpt4 key购买 nike

这是我想要实现的一个简单示例:

foo.js :

module.exports.one = function(params) { */ stuff */ }

bar.js :

module.exports.two = function(params) { */ stuff */ }

stuff.js:

const foo = require('Path/foo');
const bar = require('Path/bar');

我想做:

其他文件.js:

stuff = require('Path/stuff');

stuff.one(params);
stuff.two(params);

我不想[在 stuff.js 中]

module.exports = {
one : foo.one,
two: bar.two
}

我的解决方案是:

const files = ['path/foo', 'path/bar']

module.exports = files
.map(f => require(f))
.map(f => Object.keys(f).map(e => ({ [e]: f[e] })))
.reduce((a, b) => a.concat(b), [])
.reduce((a, b) => Object.assign(a, b), {})

或更丑/更短:

module.exports = files
.map(f => require(f))
.reduce((a, b) => Object.assign(a, ...Object.keys(b).map(e => ({ [e]: b[e] }))));

感觉很“hackish”。

有没有更简洁的方法来做到这一点?

最佳答案

它是这样工作的:

stuff.js

module.exports = Object.assign(
{},
require('./foo'),
require('./bar'),
);

或者如果Object Spread Operator支持:

module.exports = {
...require('./foo'),
...require('./bar'),
};

OtherFiles.js

var stuff = require('./stuff');

stuff.one();
stuff.two();

关于javascript - 在 Node js中将多个文件导出为单个模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45406424/

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