我发现在Javascript中有三种导出模块的方法,但我不确定它们之间是如何区别的。
有人可以解释每种方式有何不同?
const x = function(a,b){
return (a*b)
};
const y = function(a,b){
return (a/b)
};
1: module.exports = x;
2: module.exports.x = x;
3: module.exports = {
x:x,
y:y
};
答案 0 :(得分:0)
modules.exports
的值是Node.js require()
调用在加载模块后将返回的值。
假设您的模块代码位于mymod.js
。然后列出的三个案例就像这样:
1:let m = require('mymod'); m(2, 3)
会产生6
导出只是一个对象(函数)。
2:let m = require('mymod'); m.x(2, 3)
会产生6
导出单个命名属性。内部名称和导出的名称不必相同。
3:let.m = require('mymod'); m.y(6, 2)
会产生3
非常类似于2.只需一种更紧凑的方式来一次表达多个命名属性。同样,内部名称和导出名称不必相同。
请注意,ES6在该语言中内置了export
和import
个关键字。它们部分受Node.js的启发,但语法不同,在某种程度上也有不同的语义。