小程序exports和module.exports的区别

微信   2025-01-03 10:45   59   0  

exports 是指向的module.exports 的引用;

module.exports 初始值为一个空对象{},所以exports 初始值也是{};

require() 返回的是module.exports 而不是exports。

所以:我们通过

var name = '张三';
exports.name = name;
exports.sayName = function() {
  console.log(name);
}


给exports赋值其实是给module.exports 这个空对象添加了两个属性而已,上面的代码相当于:

var name = '张三';
module.exports.name = name;
module.exports.sayName = function() {
   console.log(name);
}

下面就在微信小程序中module.exports和exports的区别做出示例

function sayHello(name) {
    console.log(`Hello ${name} !`);
}
function sayGoodbye(name) {
    console.log(`Goodbye ${name} !`);
}


第一种情况,module.exports初始值为空对象,两个函数使用module.exports或exports都一样效果

module.exports.sayHello = sayHello;
module.exports.sayGoodbye = sayGoodbye; 
exports.sayHello = sayHello;
exports.sayGoodbye = sayGoodbye;

 第二种情况,module.exports初始值不为空对象,只能使用module.exports暴露接口,而不能使用exports暴露,会出现is not a function错误。

module.exports = {name:1};// module.exports给一个初始值


以下两个正常使用

module.exports.sayHello = sayHello;  
module.exports.sayGoodbye = sayGoodbye;

使用以下两个会报错误sayHello is not a function

exports.sayHello = sayHello;  
exports.sayGoodbye = sayGoodbye;






博客评论
还没有人评论,赶紧抢个沙发~
发表评论
说明:请文明发言,共建和谐网络,您的个人信息不会被公开显示。