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

Jus*_*tin 4 javascript function node.js 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));
Run Code Online (Sandbox Code Playgroud)

模式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));
Run Code Online (Sandbox Code Playgroud)

jfr*_*d00 5

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

您的第一个模式是将一个方法一次添加到默认的空对象.

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

哪个是在Node.js中创建模块时使用的更好模式,这些模块具有多个"静态"调用的函数,即不使用new关键字.

结果是相同的两种方式,它只是编码样式首选项的问题,您喜欢编写代码的方式.

我缺少ES6中的等价物吗?

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