javascript - webpack 包中的导出顺序

标签 javascript webpack ecmascript-6 es6-modules 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 生成的代码部分正在创建一个稍后调用的回调函数。特别是当用户代码 requireimport 相关模块时。

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

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

关于javascript - webpack 包中的导出顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51978704/

相关文章:

javascript - webpack -p 无法丑化 es2015 代码

node.js - heroku 中的 "HMR is not enabled for webpack-dev-server "错误

webpack - 将 postcss-loader 从 3.0.0 迁移到 4.0.2 会导致错误 : [object Object] is not a PostCSS plugin

javascript - 如何使用 ES6 类运行 NodeJS?

javascript - 如何在 JavaScript 解析后立即按顺序处理异步结果?

javascript - 如何在源于grails服务的textarea中显示换行符?

javascript - 动态设置top div位置

javascript - iOS jQuery 更改输入值失败, "addClass"调用失败

javascript - 默认情况下不显示引导 Accordion 中第一个的文本

javascript - ESLint 规则通过创建同名的 const 来防止覆盖函数(尤其是在赋值期间)