常用的导出方式有四种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的东西可以以任何一种方式导入。
