簡體   English   中英

在節點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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM