常用的导出方式有四种module.exports
,exports
,export
,export default
和两种导入方式require
和import
。
首先来看一下module exports
和exports
,这两种导出方式的区别如下:
-
module.exports
每一个Nodejs文件都会自动创建一个module对象,这个对象有一个exports属性,初始值是一个空对象。
module.exports = {}
-
exports
exports
是引用module.exports
的值。module.exports
被改变的时候,exports
不会被改变,而模块导出的时候,真正导出的执行是module.exports
,而不是exports
再来看一下export defalut
和 export
的区别:
-
export defalut
和export
都可以用来导出函数,文件,模块,常量等 - 在一个文件中,
export
可以有多个,但是export default
只有一个。 - 通过
export
方式导出,在导入时要加{ },export default
则不需要
最后,我们再来看一下require
和import
的区别
-
require
是在CommonJS中出现的,import
是在ES6中出现的,是ES6的一个
语法。 -
require
的调用时间为运行时调用,所以require
可以出现在文件的任何地方,而import
是编译时调用,所以必须放在文件头部。 -
require
是赋值过程,其实require
的结果就是对象、数字、字符串、函数等,再把require
的结果赋值给某个变量
import
是解构过程,但是目前所有的引擎都还没有实现import
,我们在node
中使用babel
支持ES6,也仅仅是将ES6转码为ES5再执行,import
语法会被转码为require
记住
export default
导出的东西只能用import
导入。而module.exports
和exports
的东西可以以任何一种方式导入。