![](/img/trans.png)
[英]Dynamically export a module by reading all files in a directory in Node.js
[英]Export multiple files as single module in node js
這是我想要實現的一個簡單示例:
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”。
有更清潔的方法嗎?
它以這種方式工作:
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();
import * as stuff from "Path";
import {foo,bar} from "Path";
你仍然可以在出口中做同樣的事情:
export function foo(){};
export function bar(){};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.