javascript - 在 Node 中导出各种功能的方法是什么?

标签 javascript node.js

所以我正在构建一个数据库层,并将您的标准 CRUD(创建、读取、更新、删除)操作公开为函数。我正在研究以何种方式导出每个函数。

方法一

function func1 () {}
function func2 () {}

module.exports = {
    "func1": func1,
    "func2": func2
}

方法二

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

module.exports = exporting;

或者,直接执行:

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

方法三

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 modules并且尚未在 V8 中实现(Node.js 在其中运行)。对于此示例,您需要软件包 babelbabel-preset-es2015 .

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

CommonJS modules export values, while ES6 modules export immutable bindings. That means: CommonJS export a copy of the module while ES2015 modules export a reference of it.

参见:What do ES6 modules export? | 2ality.com

关于javascript - 在 Node 中导出各种功能的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41253462/

相关文章:

javascript - 为什么 handleEvent 在插入 div 时要花这么多时间

javascript - 在一个div中随机排列一些图像并填满所有空间

javascript - 使用 onbeforeunload 事件,选择停留在此页面时 url 发生变化

javascript - 当鼠标悬停在 Bootstrap 中的列表文本上时如何弹出图像

node.js - 在 NodeJS 中使用 Microsoft 365 电子邮件服务器发送电子邮件

node.js - 如何使用静态方法扩展类?

javascript - 原型(prototype)和 __proto__,哪种说法是正确的?

node.js - 在 Express 应用程序配置中禁用 session

ios - 在 Openshift 上使用 Node.js 发送 iOS 推送通知

javascript - 从 javascript 字符串中 trim\n,\s,\t