Node.js 中 exports 和 module.exports 的區別

  1. 每個模塊中都有一個 module 對象, module 對象中有一個 exports 對象
  2. 咱們能夠把須要導出的成員都放到 module.exports 這個接口對象中,也就是 module.exports.xxx = xxx 的方式
  3. 可是,這樣顯得特別麻煩,爲了方便操做,在每個模塊中又提供了一個叫 exports 的成員
  4. 因此,有了這樣的等式: module.exports === exports
  5. 因此,對於:module.exports.xxx = xxx 的方式等價於 exports.xxx = xxx
  6. 當一個模塊須要導出單個成員的時候,必需要使用 module.exports = xxx
  7. 由於每一個模塊最終向外 return 的是 module.exports,而 exports 只是 module.exports 的一個引用,因此即使你爲 exports = xxx 從新賦值,也不會影響 module.exports

從新創建引用關係:

exports = module.exports;

導出多個成員(必須在對象中):

  • 方法一(使用 exports):
        exports.a = 123;
        exports.b = 'hello';
        exports.c = () => {
            console.log('ccc');
        };
        exports.d = {
            foo: 'bar'
        };

     

  • 方法二(使用module.exports):
        module.exports = {
            add: (x, y) => {
                return x + y;
            },
            str: 'hello'
        };

     

導出單個成員(拿到的直接就是 字符串, 數字 等):

  

module.exports = 'hello';

可是的話,由於只能導出單個成員,因此會出現覆蓋狀況,以下所示:spa

    module.exports = 'hello';

    // 以這個爲準,後者會覆蓋前者
    module.exports = (x, y) => {
        return x + y;
    };
相關文章
相關標籤/搜索