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

猜你喜欢

转载自www.cnblogs.com/chaichai/p/9381387.html