关于module.exports
和exports
的区别,我已经在前一篇文章讲过,传送门。
在es5中,用module.exports
和exports
导出模块,用require
引入模块。
es6新增export
和export default
导出模块,import
导入模块。
一、在es6中的两种基本用法
新建两个文件:a.js
, b.js
。a.js
用于导出模块,b.js
用于导入模块。两个文件放在同一目录下。
- 第一种用法
export default
导出:
//a.js
const Programmer = {name: 'UncleFirefly',age:25}
export default Programmer
export default
导出对应的导入:
//b.js
import Programmer from './a.js'
- 第二种用法
export
导出:
//a.js
const uncle = {name: 'UncleFirefly',age:25}
const aunt = {name: 'AuntFirefly',age:25}
export {uncle, aunt}
export default
导出对应的导入:
//b.js
import {uncle, aunt} from './a.js'
二、区别
可以在a.js
中打印出module,通过打印的内容找到4种导出模块的区别。
exports
和module.exports
的区别
查看exports
和module.exports
的区别请移步至我的另一篇文章:点我移步。export
和export default
的区别
//a.js
const Programmer = {name: 'UncleFirefly',age:25}
export default Programmer
console.log(module)
/*
//打印结果
{exports: {default:{age:25,name:'UncleFirefly'}, hot:{...}}
*/
//a.js
const uncle = {name: 'UncleFirefly',age:25}
const aunt = {name: 'AuntFirefly',age:25}
export {uncle, aunt}
/*
//打印结果
{exports: {aunt:{age:25,name:'AuntFirefly'},uncle:{age:25,name:'UncleFirefly'}, hot:{...}}
*/
从打印可以看出:
-
导出时
-
export
相当于把对象添加到module
的exports
中。 -
export default
相当于把对象添加到module
的exports
中,并且对象的key叫default
。
-
-
导入时:
不带
{}
的导入
本质上就是导入exports
中的default
属性(注:如果default
属性不存在,则导入exports
对象)。带
{}
的导入
本质上按照属性key值导入exports
中对应的属性值。
三、小tips
一般来说,module.exports
、exports
与require
对应。也就是用module.exports
、exports
导出的模块,则用require
导入。(不是绝对,如果代码支持es6,也可以用import引入)。