在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(),用于加载模块。