commonjs exports require module 参数

复制代码
function require(modulePath){
    // 根据传递的模块路径获取模块id
    var moduleId = getModuleId(modulePath);
    if(caches[moduleId]){
        return caches[moduleId];
    }
    function _require(exports,require,module,__filename,__dirname){
        // 目标模块的代码
    }
    var module = {
        exports:{}
    }
    var exports = module.exports
    var __filename = moduleId
    var __dirname = getDirname(__filename)
    _require.call(exports,exports,require,module,__filename,__dirname)
    caches[moduleId] = module.exports
    return module.exports
}
这是模仿require函数写的代码
他会将所有代码转换为requre函数的代码
在1.js 里面打印arguments来进行验证
require函数里面有5个参数就是arguments的这几个
另外在初始化时exports module.exports this三个是相等的
复制代码
复制代码
// index.js中
console.log(module.exports === exports,exports === this) // this // { // a:1, // b:2, // f:6 // } // exports = { // c:3,e:5 // } // module.exports = { // d:4 // } this.a = 1; exports.b = 2 exports = { c:3 } module.exports = { d:4 } exports.e = 5 this.f = 6 console.log(this,exports,module.exports)
复制代码
复制代码
// 2.js中
const r = require('./index.js')
console.log(r)
true true
{ a: 1, b: 2, f: 6 } { c: 3, e: 5 } { d: 4 }
{ d: 4 }
 
复制代码

 

posted @   国服第一李师师  阅读(3)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示