node.js中exports与module.exports区别

释放双眼,带上耳机,听听看~!

我们知道exports是对module.exports的引用,那么使用的过程中有什么区别呢?

使用方法

通常我们有两种导出方式,假如将他们都放在test.js文件中

给exports增加成员

使用方法

上面两种导出方式是一样的

将对象赋值给exports

使用方法

此时,第一种导出方式是错误的。程序显示’TypeError: hello is not a function’,第二种方式是对的。

导出原理

为什么我们能在test.js中使用exports,require,module.exports以及__dirname和__filename变量,是因为主调函数传过来的。
我们在test.js模块中写的代码实际上加了一层包装,如下:

所以,上面导出出错的原因是,exports是对module.exports的引用是个形参,对exports引用进行赋值只是改变了exports自身的指向,
并没有改变module.exports指向的地址。exports断开了之前与module.exports之间的关系。它们的实现过程大致如下代码,为了与现有的名字区分我加了个0:

再举个简单的例子:

结论

所以说,如果只是导出一个对象就要使用module.exports,其他情况使用exports就可以了。但是最好不要混着用。

给TA打赏
共{{data.count}}人
人已打赏
安全技术

对称加密与非对称加密优缺点详解

2021-8-18 16:36:11

安全技术

C++ 高性能服务器网络框架设计细节

2022-1-11 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索