什么方法导出节点中的各种function?

所以我正在构build一个数据库层,并将您的标准CRUD(创build,读取,更新,删除)操作公开为函数。 我正在努力导出每个function。

方法1

function func1 () {} function func2 () {} module.exports = { "func1": func1, "func2": func2 } 

方法2

 var exporting; exporting.func1 = function() {}; exporting.func2 = function() {}; module.exports = exporting; 

或者直接做:

 module.exports.func1 = function() {}; module.exports.func2 = function() {}; 

方法3

 export func1 = function() {} export func2 = function() {} 

我确定它不会以任何方式破坏事物,但是每个方法的利弊(如果有的话)又有什么意义呢?

根据你的例子,例子#1和#2是相同的东西,因为exports是一个对象。 你只是改变添加条目到这个对象的方式。

这个:

 const object = {}; object.func1 = function () { return 'hello'; }; object.func2 = function () { return 'bye'; }; 

你可以这样写:

 const object = { func1: function () { return 'hello'; }, func2: function () { return 'bye'; } }; 

最后一个例子是ES2015模块 ,在V8(Node.js运行)中还没有实现。 对于这个例子,你需要包babel和babel-preset-es2015 。

但是,使用CommonJS和ES2015模块有一个重要的区别:

CommonJS模块导出值,而ES6模块导出不可变的绑定。 这意味着:CommonJS导出模块的副本 ,而ES2015模块则导出该模块的引用

请参阅: ES6模块导出什么? | 2ality.com