ES6 和 window / 全局变量
ES6 and window / global variables
我正在使用 es6 模块。在其中一些中,我使用了 lodash。我的问题是 - 是否可以将 lodash 作为全局变量加载,或者它应该单独导入所有文件?我在初始化程序中试过这个:
import lodash from 'lodash';
window._ = lodash;
也是这样:
window._ = require('lodash');
但是没用。在我的模块中,我在使用时遇到错误,例如 _.truncate:
TypeError: Cannot read property 'truncate' of undefined
看到您正在使用 webpack,有 3 种方法可以做到这一点。
window
对象仍然可用。就像你的例子一样,你需要确保首先加载初始化程序,然后你可以像你一样将下划线附加到 window 对象,然后在你的模块中你可以将它用作 window._.truncate
。您可以看到这里的缺点是:1)存在加载顺序依赖性。 2) 存在对 window 对象的依赖。 3) 用法不太好
您可以直接为需要的模块导入underscore
。
使用webpack,你可以通过define plugin来定义全局变量 https://webpack.js.org/plugins/define-plugin/ 然后在每个模块中你可以随意使用_.truncate
。
如果你只是偶尔需要这个模块,#2 是可行的方法。如果您希望经常使用它,那么#3 会更方便。 #1 总是丑陋的,但在极少数情况下,这种解决方法可能会有所帮助,尽管你的情况显然不是。
我正在使用 es6 模块。在其中一些中,我使用了 lodash。我的问题是 - 是否可以将 lodash 作为全局变量加载,或者它应该单独导入所有文件?我在初始化程序中试过这个:
import lodash from 'lodash';
window._ = lodash;
也是这样:
window._ = require('lodash');
但是没用。在我的模块中,我在使用时遇到错误,例如 _.truncate:
TypeError: Cannot read property 'truncate' of undefined
看到您正在使用 webpack,有 3 种方法可以做到这一点。
window
对象仍然可用。就像你的例子一样,你需要确保首先加载初始化程序,然后你可以像你一样将下划线附加到 window 对象,然后在你的模块中你可以将它用作window._.truncate
。您可以看到这里的缺点是:1)存在加载顺序依赖性。 2) 存在对 window 对象的依赖。 3) 用法不太好您可以直接为需要的模块导入
underscore
。使用webpack,你可以通过define plugin来定义全局变量 https://webpack.js.org/plugins/define-plugin/ 然后在每个模块中你可以随意使用
_.truncate
。
如果你只是偶尔需要这个模块,#2 是可行的方法。如果您希望经常使用它,那么#3 会更方便。 #1 总是丑陋的,但在极少数情况下,这种解决方法可能会有所帮助,尽管你的情况显然不是。