美文网首页
六.JavaScript——exports、module.exp

六.JavaScript——exports、module.exp

作者: 陈程城 | 来源:发表于2019-08-27 00:00 被阅读0次

    node.js中的导入导出

    定义

    exports——导出

    module.exports——导出

    require——导入

    概念:require导入的是module.exports的值,或是基本类型,或是引用类型,默认module.exports是一个空对象{},而exports只是module.exports的默认空对象{}的引用(地址)而已

    这句话一定要理解,后面解释都是按上面这条概念解释的而已

    分别给module.exportsexports的默认值指向的对象{}添加属性

    // index.js
    module.exports.name = '我是默认对象下的name属性'
    exports.name1 = "我是exports引用的对象下的name1属性"
    var ind = require('./index.js')
    
    console.log(module.exports);
    // { name: '我是默认对象下的name属性', name1: '我是exports引用的对象下的name1属性' }
    console.log(exports);
    // { name: '我是默认对象下的name属性', name1: '我是exports引用的对象下的name1属性' }
    console.log(ind);
    // { name: '我是默认对象下的name属性', name1: '我是exports引用的对象下的name1属性' }
    
    

    结果:很明显,module.exportsexports默认值指向的就是同一个对象的地址

    好,稍作修改,我们在module.exportsexports添加属性后,把module.exports的值指向一个新的对象,看看会发生什么

    module.exports.name = '我是默认对象下的name属性'
    exports.name1 = "我是exports引用的对象下的name1属性"
    module.exports = {
      newName:'我是新赋值的对象下的newName属性'
    }
    var ind = require('./index.js')
    
    console.log(module.exports);
    // { newName: '我是新赋值的对象下的newName属性' }
    console.log(exports);
    // { name: '我是默认对象下的name属性', name1: '我是exports引用的对象下的name1属性' }
    console.log(ind);
    // { newName: '我是新赋值的对象下的newName属性' }
    

    module.exports指向被我们改了

    exports指向我们没改,保持正常

    require导出的内容变了

    说明:导出的是module.exports,而不是exports,module.exportsexports本身是不同的属性

    相关文章

      网友评论

          本文标题:六.JavaScript——exports、module.exp

          本文链接:https://www.haomeiwen.com/subject/usnjectx.html