webpack生成的这段代码起什么作用?

webpack生成的这段代码起什么作用?什么时候会用到?

// define getter function for harmony exports
  __webpack_require__.d = function (exports, name, getter) {
    if (!__webpack_require__.o(exports, name)) {
      Object.defineProperty(exports, name, {
        configurable: false,
        enumerable: true,
        get: getter
      })
    }
  }

  // getDefaultExport function for compatibility with non-harmony modules
  __webpack_require__.n = function (module) {
    var getter = module && module.__esModule
      ? function getDefault () { return module['default'] }
      : function getModuleExports () { return module }
    __webpack_require__.d(getter, 'a', getter)
    return getter
  }

  // Object.prototype.hasOwnProperty.call
  __webpack_require__.o = function (object, property) {
    return Object.prototype.hasOwnProperty.call(object, property)
  }
阅读 5.3k
1 个回答

看注释第一个是用于 export {aaa, bbb}import {aaa} from 'modules'
第二个是用于export default cccimport ccc from 'modulesmodules.exports ={}这两种。
babel编译的时候会将export default 编译为export.default,这个跟es6的默认导出其实是不相符的,所以需要判断处理,代码中的

// 缩减了
// 是es规范么?     是就导出.default
module.__esModule ? return module['default']

就是做的这一块。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题