在NodeJS之前,由于没有过于复杂的开发场景,前端是不存在模块化的,后端才有模块化。NodeJS诞生之后,它使用CommonJS的模块化规范。从此,js模块化开始快速发展。
模块化的开发方式可以提供代码复用率,方便进行代码的管理。通常来说,一个文件就是一个模块,有自己的作用域,只向外暴露特定的变量和函数。目前流行的js模块化规范有CommonJS、AMD、CMD、UMD以及ES6的模块系统。
| 模块化规范 | 加载机制 | 暴露方法 | 引用方法 |
|---|---|---|---|
| CommonJS | 同步加载 | module.exports exports |
require(模块路径) |
| ESM | 异步加载 | ||
| AMD | 异步加载 | require.config define |
require(模块数组) |
| CMD | 异步加载 |
CommonJS
2009年,node.js问世,将JavaScript用于服务端的编程。标志JavaScript模块化编程诞生,随后requirejs和seajs之类的工具包也相继出现,在对应规范下,require统治了ES6之前的所有模块化编程,即使现在,在ES6 module被完全实现之前,还是这样。
在CommonJS中,暴露模块使用module.exports和exports,还有一个全局性方法require(),用于加载模块。
