美文网首页
commonjs规范原理

commonjs规范原理

作者: Mr无愧于心 | 来源:发表于2019-02-28 19:31 被阅读0次
    核心
    *
    * 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);
    

    相关文章

      网友评论

          本文标题:commonjs规范原理

          本文链接:https://www.haomeiwen.com/subject/ycgoyqtx.html