使用 webpack,我正在尝试导入isEqual,因为lodash似乎正在导入所有内容。我尝试执行以下操作但没有成功:
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 包,如下所示:
lodash.isequal
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 文档
导入后,您可以isEqual在代码中使用该函数。请注意,_如果您以这种方式导入它,它不是命名对象的一部分,因此您 不 使用 引用它_.isEqual,而是直接使用isEqual。
isEqual
_
_.isEqual
替代方案:使用lodash-es
lodash-es
正如所指出的:
对于 webpack 4 和lodash-es 4.17.7 及更高版本,此代码有效。
import { isEqual } from 'lodash-es';
这是因为 webpack 4 支持sideEffects标志,而lodash-es4.17.7 及更高版本包含该标志(设置为false)。
false
为什么不使用带有斜线的版本? 此问题的其他答案建议您也可以使用破折号而不是点,如下所示:
import isEqual from 'lodash/isequal';
这也有效,但有两个小缺点:
npm install --save lodash