webpack 包中的导出顺序

Order of exports in webpack bundle

对于这样的代码:

const top = document.createElement("div");
top.innerText = "This is the top";
top.style = red;

export { top };

Webpack 创建以下内容:

...

"use strict";
__webpack_require__.r(__webpack_exports__);
__webpack_require__.d(__webpack_exports__, "top", function() { return top; });
...

const top = document.createElement("div");
top.innerText = "This is the top";
top.style = red;

这是如何工作的,因为在执行脚本时 getter function() { return top; }top 尚未定义?

Webpack 在顶部而不是底部创建导出是否有特殊原因?

谢谢。

整个js文件作为一个整体进行评估。 webpack 生成的代码部分正在创建一个将在稍后调用的回调函数。特别是当用户代码 requires 或 imports 有问题的模块时。

稍后在脚本中评估模块的内容并定义变量 top,这保证在 webpack 执行之前发生 function() { return top; }

在 javascript 中使用变量之前声明或定义变量只是惯例,不是必需的。可以通过引用父作用域中尚未定义的变量来安全地创建函数作用域,只要在执行函数时定义它们即可。