zoukankan      html  css  js  c++  java
  • exports与module.exports的区别,export与export.defult区别

    在JS模块化编程中,之前使用的是require.js或者sea.js。随着前端工程化工具webpack的推出,使得前端js可以使用CommonJS模块标准或者使用ES6 moduel特性。
    在CommonJs模块标准中我们载入模块使用的是require(),输出模块用的是exports或者module.exports
    在ES6中载入模块我们用的是import ,输出模块用的是export

    exports与module.exports的区别

    //载入模块 
    var m = require('./moduleA.js')
    m.callName()
    //输出模块
    exports.callName = function(){
        console.log('jesse')
    }
    //也可以这样输出
    module.exports.callName = function(){
        console.log('jesse')
    }
    

    module.exports才是module模块的真正接口,而exports可以理解为它的一个副本
    虽然修改exports对象的时候也会修改module.exports对象,但最终返回给调用的是module.exports对象
    当module.exports对象通过赋值方式进行设定后,就已经和exports对象没关系了

    so,我的理解是exports输出的只是要输出的对象的某个属性,module.exports才真正输出的是要输出的对象。
    一个模块文件中可以有多个exports输出,但只能有一个module.exports输出
    这种方式普遍用于node中模块的编写

    export与export.defult区别

    es6moduel特性在node环境中并不能完全支持,解决方法是用babel编译

    //载入模块 
    import {callName} from './moduleA.js'
    callName()
    //输出模块
    export function callName (){
        console.log('jesse')
    }
    

    1.export与export default均可用于导出常量、函数、文件、模块等
    2.你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用
    3.在一个文件或模块中,export、import可以有多个,export default仅有一个
    4.通过export方式导出,在导入时要加{ },export default则不需要

  • 相关阅读:
    centos-docker安装及基本使用
    List集合-03.Vector
    List集合-02.LinkedList
    List集合-01.ArrayList
    常用图像处理方法
    git使用
    bug记录
    bash vim等常用命令
    python常用
    MTCNN试用
  • 原文地址:https://www.cnblogs.com/jesse131/p/10163725.html
Copyright © 2011-2022 走看看