# 基本特性
- 自动采用严格模式,忽略'use strict'
- 每个 ESM 模块都是单独的私有作用域
- ESM 是通过 CORS 去请求外部 JS 模块的
- ESM 的 script 标签会延迟执行脚本
# 导入和导出
- 导入导出使用的 {} 并不是对象的解构,只是一种语法
- 模块的导出过程中,外部导出的成员会受内部修改的影响
- 导出的成员是一个只读的成员,无法被修改
# 导入的用法
- 导入时必须使用完整的扩展名称,不可以省略.js 的扩展名,与 CommonJS 有区别
- 导入时也必须输入完整的文件地址,不可以省略 index 这种默认访问名称
- './'相对路径也不可以省略(或'/'绝对路径)必须以此开头,不然会被认为是引入模块
- 可以用 url 来引用模块文件
- import './module.js' 加载模块但并不提取他
- import \* as obj from './module.js' 导出所有成员,并放入 obj 对象
- 如果需要动态加载模块可以使用 import('./module.js').then(function(data){console.log(data)})
- import title ,{name,age} from './module.js' 花括号之前为默认成员 default。
## ES Modules in Node.js 与 CommonJS
- ES Modules 中可以导入 CommonJS模块
- CommonJS 中不能导入 ES Modules模块
- CommonJS 始终只会导出一个默认成员