基础webpack打包后的文件分析

两个文件,index.js,login.js,login导出变量,index.js引入,并使用,使用webpack打包

(function(modules){
  //定义对象缓存加载过的对象
  let installedModules = {};
  //定义函数,替换import,require加载操作,导出模块对应的exports
  function __webpack_require__(moduleId) {
    //判断当前缓存中是都存在要被加载,存在直接返回
    if(installedModules[moduleId]){
      return installedModules[moduleId].exports
    }
    //如果没有被缓存,就需要执行模块,获取exports
    let module=installedModules[moduleId]={
      i:moduleId,
      l:false,
      exports:{}
    }
    //调用当前模块id对应的函数
    modules[moduleId].call(module.exports,module,module.exports,__webpack_require__)
    //修改l属性为true,标识已经加载这个模块
    module.l=true
    //导出exports
    return module.exports
  }
  //定义m属性用来保存modules,挂载在上面的处理函数身上
  __webpack_require__.m=modules
  //定义c属性用来保存缓存
  __webpack_require__.c=installedModules
  //定义o方法用来判断对象的身上是否存在指定的属性
  __webpack_require__.o=function(obj,key){
    return Object.prototype.hasOwnProperty(obj,key)
  }
  //d方法,往对象身上添加指定的属性,并且给该属性提供getter
  __webpack_require__.d=function(exports,name,getter){
    if(!__webpack_require__.o(exports,name)){
      Object.defineProperty(exports,name,{enumerable:true,get:getter})
    }
  }
  //r方法,用于表示当前模块是es6类型,并添加对应的esModule的属性
  __webpack_require__.r=function(exports){
    if(typeof Symbol!=='undefined'&&Symbol.toStringTag){
      Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'})
    }
    Object.defineProperty(exports,'__esModule',{value:true})
  }
  //n方法,用于设置具体的getter
  __webpack_require__.n=function(module){
    let getter=module&&module.__esModule?
      function getDefault(){return module['default']}:
      function getModuleExports(){return module}

      __webpack_require__.d(getter,'a',getter)

      return getter
  }

  //定义p属性,用来保存配置文件中的public设置的值
  __webpack_require__.p=''
  //调用__webpack_require__方法执行模块的导入和加载
  return __webpack_require__(__webpack_require__.s='./src/index.js')
})
({
    "./src/index.js":
    (function(module, exports, __webpack_require__) {
      let name=__webpack_require__(/*! ./login */ "./src/login.js")
      console.log('index.js内容执行了')
      console.log(name);
    }),
    "./src/login.js":
    (function(module, exports) {
      //commomJs的导出
      module.exports='wsy'
      // export default 'wsy'
      // export const age=22
    })
    }
)

整体呢,就是一个IIFE,入参就是需要解析的模块

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值