Node.js 的模块机制

122 阅读1分钟

Node.js在实现模块系统时采用了CommonJS的模块规范。

CommonJS的模块规范分为3个部分:

  1. 模块引用:通过require()方法并传入一个模块标识来引入一个模块的API到当前上下文中,如var math = require('math');

  2. 模块定义:通过exports对象来导出当前模块的方法或变量。模块中还存在一个module对象,exports实际上是module的属性。在Node中,一个文件就是一个模块,模块内的“全局变量”对外都不可见,只有挂载在exports上的属性才是公开的,如exports.add = function() {}; exports.PI = 3.1415926;

  3. 模块标识:模块标识其实就是传递给require()方法的参数,它必须是小驼峰命名的字符串,或者是.、..开头的相对路径,或者绝对路径。它可以没有文件名后缀.

每个模块具有独立的空间,它们互不干扰,导出和引用都很简单。CommonJs构建的这套模块导出和引入机制使得用户完全不必考虑变量污染的问题。