node.js模块应该导出命名函数还是对象?

时间:2016-12-03 09:40:19

标签: javascript node.js function ecmascript-6

在Node.js中创建具有多个“静态”调用的函数(即不使用new关键字)的模块时,使用哪种模式更好。我缺少ES6中的等价物吗?

模式1。

// math.js
module.exports.add = (x, y) => {
    return x + y;
}

module.exports.multiply = (x, y) => {
    return x * y;
};

// app.js
const math = require('./math.js');
console.log(math.add(2, 3));

模式2。

// math.js
module.exports = {
    add: (x, y) => {
        return x + y;
    },
    multiply: (x, y) => {
        return x * y;
    }
};

// app.js
const math = require('./math.js');
console.log(math.add(2, 3));

2 个答案:

答案 0 :(得分:5)

默认情况下,module.exports是一个空对象。所以,你的两种模式之间的结果确实没有区别。

您的第一个模式是一次只向默认的空对象添加一个方法。

您的第二个模式是创建一个新对象,向其添加方法,然后用新对象替换默认的module.exports对象。

  

在Node.js中创建模块时,哪种模式更好   有多个函数被称为"静态"即不是   使用新关键字。

结果是相同的两种方式,只是编码风格偏好的问题,你喜欢编写代码的方式。

  

我缺少ES6中的等效物吗?

ES6并没有真正为此引入任何新内容。您只是定义对象的属性。

答案 1 :(得分:1)

我猜没有"正确的方式"或"正确的模式"为了那个原因。在这两种情况下,你讲的大部分都是一样的。你只是把它写得有点不同。两者都将在一个对象中进行转换,并由其他模块导入。

话虽如此,我喜欢第二个。它给了我更好的感觉"捆绑"。

我会以

的形式导入
date_time