核心
*
* module对象:在每一个模块中,module对象代表该模块自身。
* export属性:module对象的一个属性,它向外提供接口。
* 缓存 如果多次引入一个模块,会缓存模块,不会重复执行
*
commonjs规范的优点(解决的问题)
*
* CommonJS模块规范很好地解决变量污染问题,
* 每个模块具有独立空间,互不干扰,命名空间等方案与之相比相形见绌。
* CommonJS规范定义模块十分简单,接口十分简洁。
* CommonJS模块规范支持引入和导出功能,这样可以顺畅地连接各个模块,实现彼此间的依赖关系。
*
*
实现req(require)函数
let fs=require('fs');
//实现一个require函数
function req(fileName){
let content=fs.readFileSync(fileName,'utf8');
let module={
exports:{}
}
//new Function 的最后一个参数是函数体 其他的参数是形参
let fn=new Function('exports','module','__dirname','__filename',content+' \n return module.exports');
//等价于
/*let fn=function(exports,module,__dirname,__filename){
console.log(content)
eval(content);
return module.exports;
}*/
module.exports=fn(module.exports,module,__dirname,__filename);
return module.exports;
}
let h=req('./a.js');
console.log(h,21);
网友评论