zoukankan      html  css  js  c++  java
  • module.exports 、exports、export、export default的区别

    module.exports和exports是属于 CommonJS 模块规范,export和export default是属于ES6语法。

    module.exportsexports导出模块,用require引入模块。

    exportexport default导出模块,import导入模块。

    Node应用由模块组成,采用CommonJS模块规范。根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。

    CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。

    1.针对CommonJs:

    使用步骤:

    (1)使用module.exports导出模块:

    新建一个文件demo.js,通过module.exports输出变量x和函数add。

    var x = 1;
    var add = function (val) {
      return val + x;
    };
    module.exports.x = x;
    module.exports.add = add;

    (2)使用require引入模块

    require方法用于加载模块。

    var demo = require('./demo.js');
    
    console.log(demo.x); // 1
    console.log(demo.add(1)); // 6

    exports 与 module.exports

    为了方便,Node为每个模块提供一个exports变量,指向module.exports。这等同在每个模块头部,有一行这样的命令。

    var exports = module.exports;

    exports其实是module.exports的引用 ,可以直接在exports对象上添加相关的方法。

    2.ES6

    通过export方式导出,在导入时要加{ },export default则不需要,使用export default命令,为模块指定默认输出,这样就不需要知道所要加载模块的变量名。

    具体使用: 

      (1)export导出:

    //demo1.js
    export const str = 'hello world' //变量 export function fuunc(a){ //函数 return a+1 }
    对应的导入方式:
    //demo2.js
    import { str, func } from 'demo' //也可以分开写两次,导入的时候带花括号

    (2)export default

    //demo1.js
    export default const str = 'hello world'

    对应的导入方式:

    //demo2.js
    import str from 'demo1' //导入的时候没有花括号

    总结一些用法上的区别:

    (1)module.exports和exports的用法是后面加一个等号,再接具体的导出

    module.exports=...
    exports=...

    (2)export和export default的用法是后面直接接具体的导出,没有等号.

    export ...
    export default ...


  • 相关阅读:
    CSS复合选择器
    模块之shutil模块模块详解
    模块之sys模块详解
    模块之os模块详解
    map遍历
    java完美处理表情符
    死磕设计模式—建造者模式
    Java String getChars()方法
    Java知识系统回顾整理01基础06数组05复制数组
    Java知识系统回顾整理01基础06数组04增强型for循环
  • 原文地址:https://www.cnblogs.com/wfaceboss/p/10099657.html
Copyright © 2011-2022 走看看