Nodejs的exports与module.exports的区别
先建两个文件
- index.js
- util.js
在util.js 写一些内容
exports.hello = 'www';exports.add = function (a,v) {return a + v;
}exports.obj = {ww:33};
在index.js引入util.js
console.log('start reauqire')
const util = require('./util');
console.log('end reauqire', util)
console.log('add', util.add)
执行node index.js看到结果
如果在index.js给util加属性会得到什么结果呢?
- index.js 加属性
// index.js
console.log('start reauqire')
const util = require('./util');
console.log('end reauqire', util)
console.log('add', util.add);util.additional = 'test' // 加这一句
- util.js 加setTimeout
// util.js
exports.hello = 'www';exports.add = function (a,v) {return a + v;
}
exports.obj = {ww:33};setTimeout(() => {console.log('exports',exports);
}, 2000)
- 结果
说明加成功了
那如果用module.exports呢?
- util.js
exports.hello = 'www';exports.add = function (a,v) {return a + v;
}exports.obj = {ww:33};module.exports = function minus (a,b) {return a - b;
}
- index.js
// index.js
console.log('start reauqire')
const util = require('./util');
console.log('end reauqire', util)
console.log('add', util.add);util.additional = 'test'
- 再运行node index.js
这个时候第二个console打印出来的不是一个对象了,而是module.exports导出的一个minus方法,说明修改module.exports 会覆盖整个exports
再把setTimeout加上呢?
- util.js
exports.hello = 'www';exports.add = function (a,v) {return a + v;
}exports.obj = {ww:33};module.exports = function minus (a,b) {return a - b;
}
setTimeout(() => {console.log('exports',exports);console.log('module.exports', module.exports);
}, 2000)
- 打印结果
说明exports和module.exports是不同的对象,但是外部文件require的时候,有module.exports就不会引用exports的,在index.js里additional挂在了exports上,而不是module.exports 上
结论
- exports和module.exports是不同的对象
- 修改module.exports 会覆盖整个exports
- 在外部require文件,有exports和module.exports的时候,给这个文件加属性是加在module.exports 上
公众号
欢迎大家关注我的公众号: 石马上coding,一起成长
Nodejs的exports与module.exports的区别相关推荐
- nodeJS学习(9)--- nodeJS模块:exports vs module.exports
模块简介: 通过Node.js的官方API可以看到Node.js本身提供了很多核心模块 http://nodejs.org/api/ 这些核心模块被编译成二进制文件,可以 require('模块名') ...
- 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 对象 看一 ...
- nodejs中的exports和module.exports
module是随文件而生的全局变量,它有exports属性,这个属性默认是一个空的字典. node的设计者画蛇添足有定义了一个exports全局变量,export指向module.exports所指向 ...
- Node.js 中 exports 和 module.exports 的区别
每一个模块中都有一个 module 对象, module 对象中有一个 exports 对象 我们可以把需要导出的成员都放到 module.exports 这个接口对象中,也就是 module.exp ...
- 【nodejs】import、export、exports、module.exports
1.import 和 export(ES6特性) 目录结构 export_file.js export const myNumbers = [1, 2, 3, 4]; const animals = ...
- exports 和 module.exports 的区别
首先我们需要知道的是,node 真正导出的对象是 module.exports 那exports 又是怎么回事呢? 其实,在一开始,exports 和 module.exports 引用的都是同一个 ...
- 一文解读exports、module.exports 和 export、export default
对于前端初学者来说,exports.module.exports 和 export.export default 容易让人产生误解,笔者顺便写篇文章解读一下. 第一部分:exports 和 modul ...
最新文章
- Kubernetes安装之证书验证
- np.append()
- 存储器的保护(二)——《x86汇编语言:从实模式到保护模式》读书笔记19
- springboot MVC视图解析流程源码分析
- (转)Android中尺寸单位杂谈
- SQL Server中的STUFF函数的使用
- UIScrollView 滚动视图 (实例)
- 认清当下的努力,可能毫无意义
- 6-1 稀疏矩阵求和 (70 分)
- 行业观察:拐点已至!抛弃传统数据库,乘云而上!
- 接受-拒绝采样/拒绝采样(accept-reject sampling/reject sampling)
- Python3实现Win10桌面背景自动切换
- “office for mac”模板文件的目录
- 腰部按摩操有两种做法
- 【C语言学习】————操作符、关键字
- 8Manage:采购谈判的6个成功策略
- 【串口助手】Python从零开始制作温湿度串口上位机
- libGDX学习之路02:利用Tiled绘制游戏地图
- vue使用vue-video-player播放视频及遇到的问题
- 59深度解密五十九:利用“抖音”进行吸粉的简单、另类玩法