使用 webpack,我试图导入 isEqual,因为 lodash
似乎导入了所有内容。我尝试了以下方法,但没有成功:
import { isEqual } from 'lodash'
import isEqual from 'lodash/lang'
import isEqual from 'lodash/lang/isEqual'
import { isEqual } from 'lodash/lang'
import { isEqual } from 'lodash/lang'
您可以将 lodash.isequal
作为单个模块安装,而无需像这样安装整个 lodash 软件包:
npm install --save lodash.isequal
当使用 ECMAScript 5 和 CommonJS 模块时,您可以像这样导入它:
var isEqual = require('lodash.isequal');
如果使用 ES6 模块,则应这样导入:
import isEqual from 'lodash.isequal';
您可以在代码中使用它:
const obj1 = {username: 'peter'};
const obj2 = {username: 'peter'};
const obj3 = {username: 'gregory'};
isEqual(obj1, obj2) // returns true
isEqual(obj1, obj3) // returns false
来源:[Lodash 文档]()Lodash 文档
导入后,您可以在代码中使用 isEqual
函数。请注意,如果以这种方式导入,它就不是名为 _
的对象的一部分,因此您
不要使用 _.isEqual
,而是直接使用 isEqual
。
替代方法:使用 lodash-es
正如 @kimamula 所指出的:
使用 webpack 4 和 lodash-es 4.17.7 及更高版本,这段代码可以正常工作。
import { isEqual } from 'lodash-es';
这是因为 webpack 4 支持 sideEffects 标志,而且 4.17.7 及更高版本的 [lodash-es] 也包含该标志(设置为 "false")。
**为什么不使用带斜线的版本? 该问题的其他答案建议,也可以使用破折号代替圆点,如下所示:
import isEqual from 'lodash/isequal';
这种方法也行得通,但有两个小缺点:
npm install --save lodash
),而不仅仅是单独的_lodash.isequal_小软件包;存储空间很便宜,CPU也很快,所以你可能不在乎这一点。isEqual
的软件包大小平均要大 28%(尝试过 webpack 2 和 webpack 3,无论是否使用 Babel,是否使用 Uglify)。如果您只想包含 isEqual
而不想包含其余的 lodash
函数(这对保持较小的 bundle 大小很有用),您可以在 ES6 中这样做;
import isEqual from 'lodash/isEqual'
这与 lodash
README中的描述基本相同,只是其中使用了 require()
语法。
var at = require('lodash/at');