如何将方法分为不同的文件,而不是将方法捆绑到一个文件中,以要求这样做

时间:2019-04-26 16:06:31

标签: node.js require

让我们假设您要构建一个包含不同方法的文件。例如:需要方法bundler.jsa()b()的文件c()。但是这些方法非常复杂并且需要很多代码,因此最好将这些方法分离到自己的文件中。这样就得到了文件a.jsb.jsc.js。 文件a.js如下所示:

module.exports = {
    a: data => console.log(data)
}

文件b和c看起来完全相同,现在您想在bundle.js文件中使用它们。

我的问题:它们都与Bundle()提出的同一个实例-> bundle.js有关,但是当我在bundle.js中要求它们时,它们都将具有相同的变量名逻辑声明。

let bundle = require('./a.js');
let bundle = require('./b.js');
let bundle = require('./c.js');

bundle.a();
bundle.b();
bundle.c();

但是当我正确理解Node.js(我猜还有其他编程语言)时,那是行不通的。我需要一个单独的层来捆绑此方法并再次将其导出。因此,我只需要该层,就可以访问所有方法。但我不知道该图层的外观。

有人可以帮我吗?

非常感谢您的建议。

1 个答案:

答案 0 :(得分:0)

从这里开始需要注意几件事。 1)您的require语句未正确完成。基本上,每次需要时,变量bundle都会被覆盖。您将执行以下操作:

let bundleA = require('./a.js');
let bundleB = require('./b.js');
let bundleC = require('./c.js');

这样,您的bundle变量不会每次都被覆盖。现在,转到您真正要问的问题。您需要创建一个文件,在这种情况下称为bundle.js,看起来像这样:

// your bundle.js
const a = require('./a.js')
const b = require('./b.js')
const c = require('./c.js')    

exports.bundledA = function() {
   return a;
}

exports.bundledB = function() {
   return b;
}

exports.bundledC = function() {
   return c;
}

现在您可以包含一个bundle.js。所以下一步就是使用它,就像这样:

// Some file
const bundle = require('./bundle')

// Using method A
bundle.bundledA()

希望这一切有意义。如果您有任何疑问,请在评论中随意说,我会尽力解释。这里还有一个用于导出和创建自己的模块的链接,您应该阅读以下内容:

https://www.sitepoint.com/understanding-module-exports-exports-node-js/

快乐编码:-)