写一个webpack

279 阅读1分钟

Js源码

github.com/zsjun/tools…

问题

有问题才需要去寻找答案,如果没有任何问题,说明根本没有任何必要去寻找。

如何在浏览器里边执行代码?

利用(function() {})(module),只不过这里会首先经过bable的转换,类似如下:

{0: [function(require, module, exports) {
        "use strict";

var _a = _interopRequireDefault(require("./a.js"));

var _b = _interopRequireDefault(require("./b.js"));

var _c = _interopRequireDefault(require("./c.js"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }

(0, _a["default"])();
(0, _b["default"])();
(0, _c["default"])();
    },
    {"./a.js":1,"./b.js":2,"./c.js":3}],1: [function(require, module, exports) {
        "use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports["default"] = void 0;

var _default = function _default() {
  console.log("a");
};

exports["default"] = _default;
    }

可以看到,经过bable转换,变成了具有exports["default"]。这样就可以通过递归,一层层的来不断的执行了。