以下是我尝试实现的一个简单示例:
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');
我想这样做:
otherFile.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"。
有更清洁的方法吗?
答案 0 :(得分:7)
它以这种方式工作:
<强> stuff.js 强>
module.exports = Object.assign(
{},
require('./foo'),
require('./bar'),
);
module.exports = {
...require('./foo'),
...require('./bar'),
};
<强> OtherFiles.js 强>
var stuff = require('./stuff');
stuff.one();
stuff.two();
答案 1 :(得分:-1)
导入*来自&#34; Path&#34 ;;
从&#34;路径&#34;
导入{foo,bar}你仍然可以在导出中做同样的事情。
导出函数foo(){}。
导出功能栏(){}