AMD 使用起来相对复杂,模块JS文件请求频繁. Require.js实现了AMD规范
define 函数 定义模块
图中 第一个参数是模块的名字,
第二个参数是数组 依赖项,
第三个参数是函数跟依赖项一一对应,这个函数的作用是为了给当前模块提供私有的空间,向外部导出成员的方式 return 即可
require 函数 加载模块
目前多数的浏览器已经支持了ES Modules 可以直接通过Script去加载 设置type=module
有以下特点:
每个module都运行在单独的私有作用域
默认是严格模式无法使用this,严格模式下是undefined
通过CORS 方式请求外部js模块
自动延迟执行脚本等同于script标签的defer属性一样
ES Modules 核心功能
import export 导入导出
导入的成员变量是引用导出的成员存放的内存地址.
导入的成员的是只读的
导入可以省略 index.js,会自动加载目录下的index.js
必须是./开头 或者 /开头 根目录查找,字母开头会以为是第三方模块
导出的成员不是字面量对象,花括号只是语法
export default xxx
import 默认成员,{ 特定成员} from ‘./xxx.js‘
as xxx 导出/导入成员重命名
import xxx.js/import {} from ‘./xxx.js‘ 直接执行模块
import * as a from ‘./xxx.js‘ 可以拿到全部成员
ES Modules 在node中的使用
默认commonjs规范下运行ESModule,修改文件扩展名.mjs
node --experimenal-modules xxx.mjs
node --experimenal-modules xxx.js
node --experimenal-modules xxx.cjs
原文:https://www.cnblogs.com/zhuzy/p/13513692.html