模块化

167 阅读1分钟

CommonJs

规范

  • 一个文件就是一个模块
  • 每个模块都有单独的作用域
  • 通过module.exports导出成员
  • 通过require函数载入模块

CommonJs是以同步模式加载模块,node执行机制是启动时加载模块,执行过程是不需要加载的,只会去使用到模块,所以这种方式在node当中不会有问题。但是换到浏览器端,每次页面加载都是导致大量同步模式请求出现,必然导致效率低下

AMD:RequireJs(异步加载规范)

  • AMD使用起来相对复杂
  • 模块JS文件请求频繁

CMD:SeaJs(通用模块定义规范)

  • CMD规范类似CommonJs规范


ES Modules

基本特性

  • 自动采用严格模式,忽略'use strict'
  • 每个ESM模块都是单独的私有作用域
  • ESM是通过CORS去请求外部JS模块的
  • ESM的script标签会延迟(defer)执行脚本