CommonJS对模块的定义十分简单,主要分为模块引用、模块定义和模块标识。ui
一、模块引用spa
var math = require('math');//这个方法接受模块标识,以此引入一个模块的API到当前上下文中。
二、模块定义code
对应引入的功能,上下文提供了exports对象用于导出当前模块的方法或者变量,而且它是惟一的出口。在模块中,存在一个module对象,它表明模块自身,而exports是module的属性。在Node中,一个文件就是一个模块,将方法挂载在exports对象上做为属性便可定义导出的方式。对象
//math.js exports.add = function(){ var sum = 0, i = 0, args = arguments, l = args.length; while (i < l){ sum += args[i++]; } return sum; }; //program.js var math = require('math');//require()返回的对象其实是exports exports.increment = function(val){ return math.add(val, 1); }
三、模块标识blog
模块标识就是传递给require方法的参数,必须符合小驼峰命名的字符串,或者以.、..开头的相对路径,或者绝对路径。它能够没有文件名后缀.js。rem
CommonJS构建的模块导出和导入机制使得用户彻底没必要考虑变量污染。字符串