Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在节点中导出各种函数的方法是什么?_Javascript_Node.js - Fatal编程技术网

Javascript 在节点中导出各种函数的方法是什么?

Javascript 在节点中导出各种函数的方法是什么?,javascript,node.js,Javascript,Node.js,因此,我正在构建一个数据库层,并将标准CRUD(创建、读取、更新、删除)操作作为函数公开。我一直在努力寻找导出每个函数的方法 方法1 方法2 或者,直接做: module.exports.func1 = function() {}; module.exports.func2 = function() {}; 方法3 我确信它不会破坏任何方法,但每种方法的优点和缺点(如果有的话)是什么?根据您的示例,示例1和示例2是相同的,因为导出是一个对象。您只需更改向该对象添加条目的方式 这: 你可以这样写

因此,我正在构建一个数据库层,并将标准CRUD(创建、读取、更新、删除)操作作为函数公开。我一直在努力寻找导出每个函数的方法

方法1 方法2 或者,直接做:

module.exports.func1 = function() {};
module.exports.func2 = function() {};
方法3
我确信它不会破坏任何方法,但每种方法的优点和缺点(如果有的话)是什么?

根据您的示例,示例1和示例2是相同的,因为
导出
是一个对象。您只需更改向该对象添加条目的方式

这:

你可以这样写:

const object = {
  func1: function () { return 'hello'; },
  func2: function () { return 'bye'; }
};
最后一个示例属于,但尚未在V8中实现(Node.js在其中运行)。对于本例,您需要软件包和

然而,使用CommonJS和ES2015模块之间有一个重要区别:

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


请参阅:

非常有趣的探索根据没有重大区别。我认为除非您正在传输代码,否则#3不会起作用,但它是较新的ES6语法,如果我通过Babel运行代码,我倾向于使用它。ES6模块尚未在最新的V8上实现,因此,它没有随附的Node.js版本。当然是必要的巴别塔与预设的
es2015
。1和2完全相同,module.exports最初只是一个空对象
module.exports.func1 = function() {};
module.exports.func2 = function() {};
export func1 = function() {}
export func2 = function() {}
const object = {};
object.func1 = function () { return 'hello'; };
object.func2 = function () { return 'bye'; };
const object = {
  func1: function () { return 'hello'; },
  func2: function () { return 'bye'; }
};