exports 和 module.exports 的区别
首先我们需要知道的是,node 真正导出的对象是 module.exports
那exports 又是怎么回事呢?
其实,在一开始,exports 和 module.exports 引用的都是同一个 空对象。也就是说,给这两个对象添加属性时,导出的是没有区别的,因为引用的是同一个对象。
看下面
test1.js
function a(){console.log('i am a')
}
function b(){console.log('i am b')
}exports.a = a
module.exports.b = b
exports 和 module.exports 指向(引用)同一个对象,所以,给这个对象添加了两个方法,a 和 b。然后导出这个对象
test2.js
const obj = require('./test1.js')obj.a()
obj.b()// i am a
// i am b
导入module.exports 对象,这个对象上添加了 两个方法a 和 b,所以,可以调用他们。
所以,在不改变 exports 的引用时,用起来是一样的,但是改变了它的值,效果就不一样了。
test1.js
function a(){console.log('i am a')
}
function b(){console.log('i am b')
}exports = {}
exports.a = amodule.exports.b = b
这里把 exports 指向(引用)了另一个空对象,再给这个空对象添加a 方法,然后,给 module.exports 的对象添加 b 方法
test2.js
const obj = require('./test1.js')obj.b()
obj.a()// i am b
// 报错,a is not a function
因为,exports 指向(引用)了另一个对象,跟module.exports 的关系断开了,而导出的是 module.exports 指向的对象,所以, b 可以用, a报错。
当然,改变module.exports 的指向(引用)也会丢失两个的关系。这里不写了,可以自己验证下。
就是对象引用之间的关系。
我觉得图文并茂,应该懂了吧,要是js基础差,可以看我这篇文章周大侠啊 进击的 JavaScript(二) 之 数据结构
exports 和 module.exports 的区别相关推荐
- node.js中exports与module.exports的区别分析
前言 关于Node.js中的exports和module.exports,很多时候都比较容易让人混淆,弄不清楚两者间的区别.那么我们就从头开始理清这两者之间的关系. 来源 在开发Node.js应用的时 ...
- Node.js: exports 和 module.exports 的区别
我理解的exports 和 module.exports 的区别,欢迎大家吐槽~ 为了更好的理解 exports 和 module.exports 的关系,我们先来补点 js 基础.示例: app.j ...
- exports和module.exports的区别
请牢记一条原则:无论使用 exports 暴露成员,或是 module.exports 暴露成员,最终暴露的结果,都是以 module.exports 所指向的对象为准. 1.module 对象 看一 ...
- Node.js 中 exports 和 module.exports 的区别
每一个模块中都有一个 module 对象, module 对象中有一个 exports 对象 我们可以把需要导出的成员都放到 module.exports 这个接口对象中,也就是 module.exp ...
- Nodejs的exports与module.exports的区别
先建两个文件 index.js util.js 在util.js 写一些内容 exports.hello = 'www';exports.add = function (a,v) {return a ...
- nodeJS学习(9)--- nodeJS模块:exports vs module.exports
模块简介: 通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ 这些核心模块被编译成二进制文件,可以 require('模块名') ...
- 一文解读exports、module.exports 和 export、export default
对于前端初学者来说,exports.module.exports 和 export.export default 容易让人产生误解,笔者顺便写篇文章解读一下. 第一部分:exports 和 modul ...
- exports 和 module.exports
(1)exports和module.exports的作用都是将文件模块里面的方法和属性暴露给require返回的对象进行调用,区别就是exports暴露的方法和属性都可以被module.exports ...
- nodejs中的exports和module.exports
module是随文件而生的全局变量,它有exports属性,这个属性默认是一个空的字典. node的设计者画蛇添足有定义了一个exports全局变量,export指向module.exports所指向 ...
最新文章
- 伍哥原创之豆荚商城商品搜索架构介绍
- 解决arXiv上传LaTeXpaper的坑
- bart使用方法_使用简单变压器的BART释义
- 在哪里学python-深圳学python人工智能培训去哪里
- 計蒜客/數正方形(dp)
- Java泛型原理、类型擦除
- InTouch软件介绍
- root 红米note5_小米红米Note 5(不要降级刷低版本)手机完美获取root教程,最强root工具,亲测可用!...
- 五个小时学会Asp连接access添加,删除,修改
- scylladb 4.1 分布式安装部署
- 网页JS自动化脚本(一)安装油猴或暴力猴等脚本管理器并新建脚本
- 《红警2》防空步兵都说了些什么?
- 成长了,记录一下,增值税发票识别写入excel文件里
- 简单的猜数字小游戏(1 ~ 100)
- Android文件读写操作(assets 文件、 raw文件、内部存储文件、外部存储文件)
- TEM TE TM模的区别和电磁波模式
- Visual Paradigm使用技能
- STM32F103 实例应用(2)——DAP仿真下载以及STVP下载
- java 公交管理系统 代码_Java学员作品-城市公交管理系统
- 梁祝二胡独奏_发展独奏
热门文章
- python安装错80072ee2_更新Win10系统出现0x80072ee2错误的解决方法
- Linux——4linux实用操作
- 2-网络编程模型:认识客户端-服务器网络模型的基本概念
- Windows下安装自动化部署工具Fabric
- python基础-列表(7)
- 【python】Visualization of field data(NBA)
- 成人本科计算机应用基础试题,成人本科-《大学计算机应用基础》期末复习习题及答案...
- poj 3259 时光穿梭问题 bellman_ford算法
- 卸载 OpenJDK
- amd为什么还用针脚_为什么英特尔的电脑CPU没有针脚,而AMD的CPU针脚却密密麻麻?...