nodejs中exports与module.exports的区别详细介绍

在nodejs中,我们可以通过exports与module.exports暴露模块成员,但它们之间存在一些差异。下面我们来详细介绍它们的区别。

module.exports与exports的关系

在nodejs中,每个模块都有一个module对象,它代表当前模块,其中包含了exports属性,而exports是module.exports的一个别名。也就是说,我们可以通过exports来暴露模块成员,也可以通过module.exports来暴露模块成员。

module.exports暴露模块成员

module.exports是真正的接口,通过它暴露的成员可以被其他模块访问。例如,我们在当前模块中定义一个add函数,并通过module.exports暴露出去:

// add.js
function add(a, b) {
  return a + b;
}
module.exports = add;

那么,在其他模块中就可以通过require函数来访问add函数了:

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

exports暴露模块成员

exports也是暴露模块成员的接口之一,它实际上是module.exports的一个别名。在上面的示例中,我们可以通过exports来暴露add函数:

// add.js
exports.add = function(a, b) {
  return a + b;
};

同样,在其他模块中就可以通过require函数来访问add函数了:

// index.js
const { add } = require('./add');
console.log(add(1, 2)); // 3

需要注意的是,exports实际上是一个指向module.exports的引用。也就是说,如果你直接给exports赋值,它就不再指向module.exports了,这样就会导致暴露的成员无法被其他模块访问。例如,在下面的示例中,我们将exports直接赋值为一个函数,并不能正常暴露函数:

// add.js
exports = function(a, b) {
  return a + b;
};
// index.js
const add = require('./add');
console.log(add(1, 2)); // TypeError: add is not a function

总结

  • module.exports是真正的接口,通过它暴露的成员可以被其他模块访问。
  • exports实际上是一个指向module.exports的引用。如果直接给exports赋值,就会改变它的指向,导致暴露的成员无法被其他模块访问。
  • 如果要使用exports来暴露模块成员,在定义时必须使用属性的方式,而不是直接赋值。

希望以上内容对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:nodejs中exports与module.exports的区别详细介绍 - Python技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • Nest.js中使用HTTP五种数据传输方式小结

    下面我将为你详细讲解“Nest.js中使用HTTP五种数据传输方式小结”的完整攻略。本文将介绍Nest.js中常用的五种HTTP数据传输方式,即GET、POST、PUT、DELETE和PATCH。 1. GET 在Nest.js中使用GET方式,可以通过@Get()注解实现。例如,以下代码演示了如何使用GET方法获取“/hello”路由的数据: @Get(‘…

    node js 2023年6月8日
    00
  • node.js基于socket.io快速实现一个实时通讯应用

    下面详细讲解“node.js基于socket.io快速实现一个实时通讯应用”的完整攻略。 简介 Socket.io 是一个优秀的跨浏览器的 WebSocket 实现,它解决了 WebSocket 在使用过程中的兼容性问题,并且实现了多种应用级别的实时通信协议。使用 Node.js 和 Socket.io 可以快速实现一个实时通讯应用。 准备 首先,你需要安装…

    node js 2023年6月8日
    00
  • 使用js声明数组,对象在jsp页面中(获得ajax得到json数据)

    下面是使用JavaScript声明数组和对象,并在JSP页面中获取AJAX获取的JSON数据的完整攻略: 步骤一:准备工作 首先,在JSP页面中引入jQuery库,以便使用AJAX获取JSON数据。可以使用以下代码: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1…

    node js 2023年6月8日
    00
  • 利用n 升级工具升级Node.js版本及在mac环境下的坑

    以下是利用n升级工具升级Node.js版本及在mac环境下的坑的完整攻略。 利用n升级Node.js版本 n 是一个简单的 Node.js 版本管理器,可以帮助你安装、管理多个 Node.js 版本。下面是使用n来升级Node.js版本的步骤: 安装n 首先需要先安装n。可以使用以下命令安装n: npm install -g n 查看当前安装的Node.js…

    node js 2023年6月8日
    00
  • 2014年最火的Node.JS后端框架推荐

    2014年最火的Node.JS后端框架推荐 Node.js是一个服务器端JavaScript环境,它以高效的事件驱动和非阻塞I / O模型而闻名,在现代Web应用程序开发中越来越受欢迎。但是,Node.js本身只是一个运行时环境,它需要框架来简化Web应用程序开发。在 2014年,以下是一些最流行的Node.js后端框架: 1. Express Expres…

    node js 2023年6月7日
    00
  • nodejs项目windows下开机自启动的方法

    以下是详细讲解Node.js项目Windows下开机自启动的方法攻略: 方案一:使用node-windows模块 安装node-windows模块 npm install -g node-windows 在Node.js项目中引入node-windows模块 const winService = require(‘node-windows’).Service…

    node js 2023年6月8日
    00
  • node+express+ejs制作简单页面上手指南

    下面我将为您详细介绍如何使用node+express+ejs制作简单页面的步骤。 1. 安装node和express框架 如果你还没有安装node.js和express框架的话,你需要先从官网下载并安装Node.js并使用npm安装express框架。在命令行中输入以下命令进行安装: npm install express –save 2. 创建Expre…

    node js 2023年6月8日
    00
  • 教你30秒发布一个TypeScript包到NPM的方法步骤

    创建 NPM 账号 首先,你需要在 NPM 官网注册一个账号。注册账号很简单,只需要填写几个基本信息即可。若你已有账号,请跳过此步。 初始化工程 创建工程文件夹,进入此文件夹,初始化工程: npm init (在终端输入该命令后,按照提示输入参数) 安装 TypeScript 在终端输入以下命令: npm install typescript –save-…

    node js 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部