exports跟module.exports都指向的是同一个内存区域。(module.exports=exports)
    1、当没有module.exports导出方法或者变量的时候,那么exports所收集的变量跟方法都会影响到module.exports(对象是按引用赋值),最终是导出的是module.exports。
    2、当exports跟module.exports同时存在,那么只会导出module.exports所指向的内容。这就相当于exports跟module.exports切断了联系,module.exports指向了另外的一个内存区域。

    1. exports.getA=()=>{
    2. return 1;
    3. }
    4. exports.getB=()=>{
    5. return 2;
    6. }
    7. module.exports={
    8. getA(){
    9. return 11;
    10. }
    11. }
    12. exports.getC=()=>{//不会生效,不会将getC导出
    13. return 3;
    14. }

    //此处注意,虽然module.exports跟exports指向同一个内存,但是在这儿的时候方法跟变量已经导入出去了,并不会执行到exports.getC这块,所以exports.getC不会影响到module.exports。
    3、当只导出一个方法或者变量的时候。如下面所示:

    1. let getA=()=>{
    2. return 1;
    3. }
    4. module.exports=getA;
    1. let getA=()=>{
    2. return 1;
    3. }
    4. module.exports={
    5. getA
    6. }

    其实都一样,注意一下,引入的时候到底是一个方法还是对象,取决于module.exports导出的是什么,如果是一个对象,则需要a.getA();这样调用,如果导出是一个方法直接调用a()。//此处假设a是引入的那个模块。