我的超长文件(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如何工作的一般知识。)
答案 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