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属性被返回给了调用方。

 

3. 既然exports是module对象的一个属性,直接用exports即可,那么为什么还需要存在module.exports

   因为有时候require需要引入一个类,这个时候就需要使用module.exports=function(){XXX}。

 

posted @ 2021-12-02 20:43  东方春  阅读(74)  评论(0编辑  收藏  举报