Node中exports与module.exports的区别

Node中exports与module.exports的区别

Node.js中,为了不造成变量和函数的污染,为开发者提供了简单的模块系统. 要在一个文件模块中获取其他文件模块的内容,首先需要使用require()函数加载这个模块;在 被加载的模块中使用exports或者module.exports对象向外开放变量,函数等.

比如:
info.js

// 向外开放变量
exports.name = 'tom';
module.exports.age = 10;
module.exports.sayHello = function () {
	console.log('hello')
}

demo.js

// 加载模块
var myModule = require('./info');
console.log(myModule)
// 输出模块中变量的值
console.log('name:' + myModule.name)
console.log('age:' + myModule.age)
// 调用模块的方法
myModule.sayHello()

运行结果如下:
在这里插入图片描述

由上可知,exports和module.exports都可以对外开放变量或者函数,那么他们之间又又什么区别呢?

答案: 虽然exports和module.exports都可以对外开放变量或者函数,但是在使用上,module.exports可以单独定义,返回数据类型,而exports只能是返回一个Object对象.

为了更好的理解exports和module.exports的区别,下面通过一个案例来演示.
test.js

// 定义一个数组
module.exports = ['name','type','age'];

demo.js

// 加载模块
var myModule = require('./test');
console.log(myModule)
// 输出模块中数组长度
console.log('length:' + myModule.length)

运行结果,如下图:
在这里插入图片描述

由 上结果可以看出,module.exports可以单独定义数组,并成功向外开放.

下面修改test.js中代码

// 定义一个数组
exports = ['name','type','age'];

查看运行结果:
在这里插入图片描述

可见,使用exports不能直接定义并返回数据类型,会切断与require的联系

综上所述,得出结论:

  • exports和module.exports都可以对外开放变量或者函数,初始值为一个{ }空对象;
  • 在使用上,module.exports可以单独定义,返回数据类型,而exports只能是返回一个Object空对象.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值