模块化
小于 1 分钟
模块化
ESModule 和 CommonJS
ESM
暴露模块:export default {} , export {} , export function(){} ,export const x = xxx
引入模块:import xxx from 'path', import {xxx} from 'path'
CommonJS
暴露模块:module.exports = value 或 exports.xxx = value // exports不允许被重写
// module.exports优先级高于exports 即同时出现会返回module.exports
引入模块:require(xxx),如果是第三方模块,xxx为模块名;如果是自定义模块,xxx为模块文件路径
对比
ESM | CommonJS | AMD | CMD | UMD | |
---|---|---|---|---|---|
加载机制 | 编译时 | 运行时 | 提前预加载 | 编译时 & 运行时按需加载 | - |
同步/异步 | 异步 | 同步 | 异步 | 异步,有延迟执行的情况 | - |
适用场合 | 浏览器、服务端 | 服务端 | 浏览器 | 浏览器 | 浏览器、服务端 |
是否常见 | ☆☆☆ | ☆☆☆ | ☆ | ☆ | ☆ |