zoukankan      html  css  js  c++  java
  • module.exports exports export export.default import require之间的关系

    module.exports exports export export.default import require这些是nodejs中模块应用常用的关键词,比较容易混淆,今天从网站收集了一些资料,在此总结一下。

    在讲具体情况前,先讲解下CommonJs、ES6和nodejs之间的关联,这样更加利于区分理解标题涉及的内容。

    CommonJS

    是个规范这个规范中定义了许多API,用于普通应用程序(主要指非浏览器的应用)使用的API,从而填补了这个空白。它的终极目标是提供一个类似Python,Ruby和Java标准库。这样的话,开发者可以使用CommonJS API编写应用程序,然后这些应用可以运行在不同的JavaScript解释器和不同的主机环境中

    ES6

    可直接理解为javascript的增强版(增加了新的规范、特性与功能)或最新版,两者之间虽然略有差异,但也可以忽略(不要在意这些细节,呵呵),就有点类似于JAVA8与JAVA语言的关系.

    Nodejs支持CommonJS和ES6两种规范。

    module.exports/exports(导出模块)、require(导入模块是属于CommonJS模块规范!

    export/export default(导出模块import(导入模块是属于ES6语法

    说到这里,对于上面这些模块操作关键字应该有了初步的了解。那么问题来了

    1.CommonJS模块规范中module.exports和exports有什么区别

    exports:首先对于本身来讲是一个变量(对象),它不是module的引用,它是{}的引用,它指向module.exports的{}模块
    module.exports:首先,module是一个变量,指向一块内存,exports是module中的一个属性,存储在内存中,然后exports属性指向{}模块。

    exports = module.exports = {};

    所以module.exportsexports的区别就是var a={}; var b=a;,a和b的区别

    以上问题答案参考自(https://www.cnblogs.com/wbxjiayou/p/5767632.html

    2.ES6中export和export default有什么区别

    export其实和export default就是写法上面有点差别,一个是导出一个个单独接口,一个是默认导出一个整体接口

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

    export用法:
    
    导出文件 testa.js
     function functionA(){...}
     var val1 ='test';
    
    export {functionA,val1}
    
    导入文件使用:
    import{functionA,a} from './testa'  或者
    import{functionA} from './testa'
    
    
    export default用法
    导出文件testa.js
    export default function functionA(){}
    
    导入文件:
    import functionA from  './testa'
    

    以上是初浅的区别解释,在此留个问题后续深入了解:这些关键字内部如何实现的,更深层次的区别在哪 ?

     

    以上内容参考了作者:https://www.cnblogs.com/Nutrient-rich/p/7047877.html

  • 相关阅读:
    MySql数据库的导入_命令工具
    Java_JVM学习笔记(深入理解Java虚拟机)___重点
    HTML——<meta http-equiv="content-type" content="text/html; charset=UTF-8">
    HTML——表格table标签,tr或者td
    Java _Map接口的使用(转载)
    Java_Web _Servlet生命周期实验
    Java_Web___字符串转码String.getBytes()和new String()——(转)
    Java_Iterator-------迭代器配合Listarray使用,具有更多的功能(转载)
    Java_LIST使用方法和四种遍历arrayList方法
    Java_web 乱码和一些地址输错的问题(原创)
  • 原文地址:https://www.cnblogs.com/chaichai/p/9381387.html
Copyright © 2011-2022 走看看