CommonJS的模块规范


1.模块引用

math.js

function add(v1,v2){
    return v1+v2;
}
module.exports.add = add;
//也可以用.exports.add = add;不过建议用module.exports,因为有时候exports需要直接赋值,如果直接使用exports=XXX,只是改变了形参

main.js

var m = require('math'); //也可以用math.js,一般省略“.js”

var result = m.add(4, 1);//m其实就是math.js中的exports变量
console.log(result); 

它的意义在于将类聚的方法和变量等限定在私有的作用域中。CommonJS构建的这套模块导出和引入机制使得用户完全不必考虑变量污染。 

 2. 代码本质

 编译和执行是引入文件模块的最后一个阶段,定位到具体文件后,Node会新建一个Module对象,然后根据路径载入并编译。

 在执行之后,模块的exports属性被返回给了调用方。