我正在使用es6模块。在其中一些我使用lodash。我的问题是 - 是否可以将lodash作为全局变量加载,或者它应该单独导入所有文件中?我在初始化程序中尝试了这个:
import lodash from 'lodash';
window._ = lodash;
也是这样:
window._ = require('lodash');
但它不起作用。在我的模块中,我在使用时会遇到错误,例如_.truncate:
TypeError:无法读取未定义
的属性'truncate'
答案 0 :(得分:4)
有三种方法可以让您看到使用webpack。
window
对象仍然可用。就像您的示例一样,您需要首先确保初始化程序已加载,然后您可以像下一样将下划线附加到窗口对象,然后在模块中将其用作window._.truncate
。你可以看到这里的缺点是:1)有一个加载顺序依赖。 2)对窗口对象有依赖性。 3)用法不太好。
您可以直接导入underscore
所需的模块。
使用webpack,您可以通过define plugin https://webpack.js.org/plugins/define-plugin/定义全局变量然后在每个模块中,您可以随意使用_.truncate
。
如果您偶尔只需要模块,那么#2就是您的选择。如果您希望经常使用它,那么#3会更方便。 #1总是很难看,但在极少数情况下这样的解决方法可能有所帮助,尽管你的情况显然不是。