javascript - 如何导入单个 Lodash 函数?

标签 javascript lodash

使用 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 documentation

导入后,您可以在代码中使用isEqual 函数。请注意,如果您以这种方式导入它,它不是名为 _ 的对象的一部分,因此您 不要_.isEqual 引用它,而是直接用isEqual 引用它。

备选方案:使用 lodash-es

正如 @kimamula 指出的那样:

使用 webpack 4 和 lodash-es 4.17.7 及更高版本,此代码有效。

import { isEqual } from 'lodash-es';

这是因为 webpack 4 支持 sideEffects标志和 lodash-es 4.17.7 及更高版本包括标志(设置为 false)。

为什么不使用带斜杠的版本? 这个问题的其他答案建议您也可以使用破折号而不是点,如下所示:

import isEqual from 'lodash/isequal';

这也行,但有两个小缺点:

  • 您必须安装整个 lodash 包(npm install --save lodash),而不仅仅是单独的小 lodash.isequal 包;存储空间便宜,CPU 速度快,所以你可能不关心这个
  • 使用 webpack 等工具生成的包会稍大一些;我发现使用 isEqual 的最小代码示例的包大小平均大 28%(尝试过 webpack 2 和 webpack 3,有或没有 Babel,有或没有 Uglify)

关于javascript - 如何导入单个 Lodash 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43479464/

相关文章:

Chrome 的 Javascript/Html 问题

javascript - ~~ ("double tilde") 在 Javascript 中做什么?

javascript - 禁用 Ext.form.ComboBox 中的某些项目

使用 Javascript 对包含年份的字符串数组进行排序

javascript - 如何获取 Json 文档数组中数组的索引

javascript - 如何使用 lodash 返回嵌套数组?

javascript - 在 JS/JSON 函数中返回变量

javascript - 如何在不创建新数组的情况下用另一个数组扩展现有 JavaScript 数组

javascript - 如何从两个数组中获取唯一的集合,通过键的值删除第二次出现的项目,而不是像 Lodash unique By 那样删除第一个项目?

javascript - 使用排序数组对对象键进行排序