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 生成的代码部分正在创建一个将在稍后调用的回调函数。特别是当用户代码 require
s 或 import
s 有问题的模块时。
稍后在脚本中评估模块的内容并定义变量 top
,这保证在 webpack 执行之前发生 function() { return top; }
在 javascript 中使用变量之前声明或定义变量只是惯例,不是必需的。可以通过引用父作用域中尚未定义的变量来安全地创建函数作用域,只要在执行函数时定义它们即可。
对于这样的代码:
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 生成的代码部分正在创建一个将在稍后调用的回调函数。特别是当用户代码 require
s 或 import
s 有问题的模块时。
稍后在脚本中评估模块的内容并定义变量 top
,这保证在 webpack 执行之前发生 function() { return top; }
在 javascript 中使用变量之前声明或定义变量只是惯例,不是必需的。可以通过引用父作用域中尚未定义的变量来安全地创建函数作用域,只要在执行函数时定义它们即可。