1 exports是module.exports的一个引用
2 require引用模块后,返回给调用者的是module.exports而不是exports
3 exports.xxx,相当于在导出对象上挂属性,该属性对调用模块直接可见
4 exports =相当于给exports对象重新赋值,调用模块不能访问exports对象及其属性
如果此模块是一个类,就应该直接赋值module.exports,这样调用者就是一个类构造器,可以直接new实例
1 exports暴露属性和函数:
exports.str = 'a';
exports.fn = function () { wx.showToast({
title: 'good',
})};
在使用时候: var m=require("../../utils/demo.js");直接m.str或m.fn()就能引用暴露的属性和方法
2 module.exports暴露对象
var handle;
handle = {
str:"hello_world",
fn: function () {
wx.showToast({
title: 'hello_world',
})
}
}
module.exports = handle;
在使用时候:var m = require("../../utils/hhh.js");m对象就持有暴露的handle对象引用,用m.fn()调用函数,m.str引用str属性
注意:
1 对于要导出的属性,可以简单直接挂到exports对象上
2 对于类,为了直接使导出的内容作为类的构造器可以让调用者使用new操作符创建实例对象,应该把构造函数挂到module.exports对象上,不要和导出属性值混在一起