一,区别于commonJS
- import和export是关键字
- 采用编译器的静态分析,并且也加入了动态引用的方式(在代码解析阶段执行,所以不能写到逻辑代码中。逻辑代码是个执行过程)
二,语法
–导出–
导出的是变量的引用,就是地址,所以改动了值,导出的内容也会改变。
方式一:
1 2 3 4
| export const name="why" export const sayHello=function(name){ }
|
方式二:{} 中统一导出
1 2 3 4 5
| export { name, sayHello }
|
方式三:{} 导出时,可以给变量起别名
1 2 3 4
| export { name as FName, sayHello as FSayHello }
|
–导入–
方式一:
1 2
| import {name,sayHello} from './xx/xx.js'
|
方式二:{} 导出变量之后可以起别名
1 2
| import {name as oName,sayHello as oSayHello} from './xx/xx.js'
|
方式三:* as foo
1 2 3
| import * as foo from './xx/xx.js' foo.name
|
–default–
1 2 3 4
| export default function(){ 方法() } import 自定义名字 from "./x"
|
注意:一个模块只有一个default
三,ConmonJS和ES Module交互
- 通常情况下,cjs不能加载ES Module
- 多数情况下,ES Module可以加载cjs