ES6模块主要有两个功能:export和import

export:用于对外输出本模块(一个文件可以理解为一个模块)变量的接口

import:用于在一个模块中加载另一个含有export接口的模块。

在Javascript ES6中,export与export default均可用于导出常量、函数、文件、模块等,你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用,但在一个文件或模块中,export、import可以有多个,export default仅有一个。

// a.js
var sex="boy";
var echo=function(value){
  console.log(value)
}

export {sex,echo} 

//通过向大括号中添加sex,echo变量并且export输出,就可以将对应变量值以sex、echo变量标识符形式暴露给其他文件而被读取到

//不能写成export sex这样的方式,如果这样就相当于export "boy",外部文件就获取不到该文件的内部变量sex的值,因为没有对外输出变量接口,只是输出的字符串。



// b.js

通过import获取a.js文件的内部变量,{}括号内的变量来自于a.js文件export出的变量标识符。

import {sex,echo} from "./a.js"

console.log(sex) // boy

echo(sex) // boy



使用方法
1、

//demo1.js
export const str = 'hello world'

export function f(a){
    return a+1
}

导入方式:

//demo2.js
import { str, f } from 'demo1' //也可以分开写两次,导入的时候带花括号

2、

//demo1.js
export default const str = 'hello world'
//demo2.js
import str from 'demo1' //导入的时候没有花括号

也就是说:
export爆出的时候,import导入的时候要用{}。
export default爆出的时候,import导出模块不用{}

注意:

1、export default 向外暴露的成员,可以使用任意变量来接收

2、在一个模块中,export default 只允许向外暴露一次

3、在一个模块中,可以同时使用export default 和export 向外暴露成员

4、使用export向外暴露的成员,只能使用{  }的形式来接收,这种形式,叫做【按需导出】

5、export可以向外暴露多个成员,同时,如果某些成员,在import导入时,不需要,可以不在{ }中定义

6、使用export导出的成员,必须严格按照导出时候的名称,来使用{ }按需接收

7、使用export导出的成员,如果想换个变量名称接收,可以使用as来起别名