zoukankan      html  css  js  c++  java
  • 浅析module.exports和exports区别和使用

    module.exports和exports

    写node的时候,特别是自定义模块的时候,都是一顿乱敲,然后module.exports={}完事。
    但有时候去看别人写的代码的时候会发现还可以exports,比如导出一个函数exports.fn = function(){}这样总少写了module,感觉更简洁。
    为了让自己写代码更快乐一点,我决定搞清楚它们的区别。
    查看官方文档,谷歌一波。
    最后发现,exports只是module.exports的全局引用,原文是这样说的:

    "exports is assigned the value of module.exports before the module is evaluated."

    意思是:在模块被导出之前exports被赋值为module.exports。
    用中文的话来说就是一个全局引用,在模块内部你都可以使用exports导出一些东西。

    值得注意的是,你不能给exports赋值,这很重要,很重要,很重要。

    比如,你想导出一个类。

    class girl {
      constructor(age) {
        this.age = age
      }
      love(u) {
        return "你是个好人!"
      }
    }
    // 把她导出去
    exports = girl  // 出错! 不能重写exports!
    // 正确做法
    module.exports = girl
    

    总结:

    1. exports只是module.exports的引用
    2. 如果你想要使用exports导出模块,千万不能给它赋值!
    3. 稳一点的做法是使用module.exports,虽然exports用起来是挺爽的
  • 相关阅读:
    进程间通迅之消息队列
    进程间通讯之共享内存
    标准块CP功能实现
    标准字符cp功能
    文件cp功能
    jest 的 coverage 提示 unknown 的解决方案
    js中的相等
    getBoundingClientRect 和 requestAnimFrame 的polyfill
    设计模式(4): 给组件实现单独的store
    Vue项目移动端滚动穿透问题
  • 原文地址:https://www.cnblogs.com/wljqds/p/10611000.html
Copyright © 2011-2022 走看看