Javascript将main.js拆分为两个文件(导入?require?)

时间:2017-04-12 12:23:19

标签: javascript node.js

我的超长文件(main.js)工作正常。但是我想把处理'y'的函数拆分成一个单独的组织文件。在PHP中我会使用require('yfunctions.php')并完成它。

javascript中是否存在不需要重写函数调用的等价物?

main.js:

// do stuff

function first(x){
  // do stuff with x
}

function second(y){
  // do stuff to y
  // return y
}

function third(y){
  // do stuff with y
}

最终成为:

main.js:

require('yfunctions.js');
// do stuff

function first(x){
  // do stuff with x
}

yfunctions.js:

function second(y){
  // do stuff to y
  // return y
}

function third(y){
  // do stuff with y
}

以上不起作用(似乎)。我是否必须在yfunctions.js中为每个函数添加“exports”声明?有没有办法说“将此文件中的每个函数导出为函数?”

(注意,我正在使用node.js / electron ...但我很好奇有关javascript如何工作的一般知识。)

2 个答案:

答案 0 :(得分:3)

使用module.exports导出模块的成员。在您的示例中:

module.exports.second = second;
module.exports.third = third; 
function second(y){
  // do stuff to y
  // return y
}

function third(y){
  // do stuff with y
}

没有选项可以自动导出模块的所有成员。

如果你在ES6工作,上面的内容可以简化为:

module.exports = {
    second,
    third
};

function second(y){
  // do stuff to y
  // return y
}

function third(y){
  // do stuff with y
}

答案 1 :(得分:2)

在这种情况下,您必须使用模块导出,并使用require导出其他存档中的函数。在您可以使用之后,请查看我的示例

<强> functions.js

module.exports = {
  foo: function () {
    // do something
  },
  bar: function () {
    // do something
  }
};

var tryit = function () {
}

使用functions.js

中的函数
var callFunction = require('./functions');
console.log(typeof callFunction .foo); // => 'function'
console.log(typeof callFunction .bar); // => 'function'
console.log(typeof callFunction .tryit); // => undefined because does not use exports