模块化
标准与规范
CommonJS 同步模块加载模块
- 一个文件就是一个模块
- 每个模块都有单独的作用域
- 通过module.exports导出成员
- 通过require函数载入模块
AMD 异步
- AMD使用起来相对复杂
- 模块JS文件请求频繁
ES Modules VS CommonJS
ES Modules
- 基本特性
- 通过给 script 添加 type = module 的属性
- ESM 自动采用严格模式,忽略‘use strict’
- 每个ES Module 都是运行在单独的私有作用域中
- ESM是通过CORS的方式请求外部JS模块
- ESM的script标签会延迟执行脚本
- 导出导入
- export { name } || export
- import { name } from 'path'
- 注意事项
- export default { } 导出是对象
- export 导出引用
- import { name } from '完整路径名称'
- ES Modules in Nodejs
- *.mjs
- 注意事项
- ESM中可以导入CommonJS
- CommonJS中不能导入ESM
- CommonJS始终只会导出一个默认成员
- 注意import不是解构导出对象