介绍

CommonJS是一个项目,最初是服务于服务端的,在nodejs兴起后用于后端模块化,但是载体是js。

参考构建 ESModule 与 CommonJS 产物

特点

  1. 每个文件就是一个模块,文件内的变量、函数、类都是私有的
  2. require用来加载某个模块
  3. module代表当前模块,是一个对象
  4. exportsmodule上的一个属性,保存当前模块要导出的变量

注意

为了方便编写代码,nodejs在实现CommonJs规范的时候,为每个模块提供了一个exports的私有变量,指向module.exports。等效于:

var exports = module.exports

所以可以直接这么写代码:

exports.val = 1

直接给exports重新赋值是没有用的,因为改的是私有变量的指向,而不是module.exports