ES6 和窗口/全局变量



我正在使用 es6 模块。在其中一些中,我使用lodash。我的问题是 - 是否可以将 lodash 加载为全局变量,或者应该单独导入所有文件?我在初始值设定项中尝试了这个:

import lodash from 'lodash';
window._ = lodash;

同样是这样:

window._ = require('lodash');

但它不起作用。在我的模块中,使用时出现错误,例如_.truncate:

类型错误: 无法读取未定义的属性"截断">

有 3 种方法可以让这种情况看到您正在使用 webpack。

  1. window对象仍然可用。就像您的示例一样,您需要确保首先加载初始值设定项,然后您可以像以前一样将下划线附加到窗口对象,然后在模块中可以将其用作window._.truncate。您可以看到这里的缺点是:1(存在加载顺序依赖性。2(存在对窗口对象的依赖。3(用法不好。

  2. 您可以直接为所需的模块导入underscore

  3. 使用
  4. webpack,您可以通过定义插件来定义全局变量 https://webpack.js.org/plugins/define-plugin/然后在每个模块中,您可以随意使用_.truncate

如果您只是偶尔需要该模块,#2 是要走的路。如果您希望经常使用它,那么#3会更方便。#1 总是很丑陋,但在极少数情况下,这种解决方法可能会有所帮助,尽管您的情况显然不是。

最新更新