ES6和窗口/全局变量

时间:2017-03-24 18:55:54

标签: webpack ecmascript-6 lodash vuejs2 vue-loader

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

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

也是这样:

window._ = require('lodash');

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

  

TypeError:无法读取未定义

的属性'truncate'

1 个答案:

答案 0 :(得分:4)

有三种方法可以让您看到使用webpack。

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

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

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

  4. 如果您偶尔只需要模块,那么#2就是您的选择。如果您希望经常使用它,那么#3会更方便。 #1总是很难看,但在极少数情况下这样的解决方法可能有所帮助,尽管你的情况显然不是。