美文网首页
exports 和 module.exports 到底怎么用

exports 和 module.exports 到底怎么用

作者: Oldboyyyy | 来源:发表于2020-04-29 15:53 被阅读0次

    在搞清楚 exportsmodule.exports 之前, 要先搞懂这样一道面试题

    var a = 1;
    var b = a;
    a = 2;
    b = ? // b 显然是 1
    
    var a = { a: 1 };
    var b = a;
    a = 2;
    b = ? // { a: 1 }
    

    无非就是基本类型引用类型老生常谈的问题了. 如果这明白了, 那么 exportsmodule.exports 就是差不多了.

    实际上 exportsmodule.exports是指向统一对象的.

    // modele是 node 的内置对象
    module.exports = {};
    const exports = module.exports;
    

    虽然我的模块最后一步是 module.exports = {...}实际上 node 最后会在你的代码块上做封装的

    // 外面这层函数是 node 给我们包装的额
    function(module, exports, require) {
      module.exports = {a: 1}
    }
    function require(path) {
        ...// 示意代码 经过一系列计算找到那个 module
        return module.exports
    }
    

    可以看到 require 得到的东西实际上就是 module.exports 的值.

    // 这两种方式是等效的
    exports.a = {a: 1}
    module.exports.a = {a: 1}
    
    exports = 1 // 这样导出 require 得到的是 {}
    exports = { a: 1 }  // 这样导出 require 得到的是 {}
    

    不确定, 搞不清的 module.exports 准没错!!

    相关文章

      网友评论

          本文标题:exports 和 module.exports 到底怎么用

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