Javascript 洛达斯函数&x27;s前缀

Javascript 洛达斯函数&x27;s前缀,javascript,lodash,Javascript,Lodash,我是个笨蛋,所以如果这个问题听起来很愚蠢,请道歉,但人们为什么要使用u。在lodash函数之前。我见过人们通常使用!。类似于lodash函数的u.cloneDeep(),但有时他们似乎在没有类似的情况下使用lodash函数。有什么原因吗?关键是这一行: 从'lodash'导入{find} 在这种情况下,他们从lodash中“提取”一个函数,并将其分配给变量find 如果您只需要lodash中的一两个函数,这是很好的。但是如果您需要几个,这种技术会有点麻烦。这取决于您设置的JavaScript环境

我是个笨蛋,所以如果这个问题听起来很愚蠢,请道歉,但人们为什么要使用u。在lodash函数之前。我见过人们通常使用!。类似于lodash函数的u.cloneDeep(),但有时他们似乎在没有类似的情况下使用lodash函数。有什么原因吗?

关键是这一行:

从'lodash'导入{find}

在这种情况下,他们从lodash中“提取”一个函数,并将其分配给变量
find


如果您只需要lodash中的一两个函数,这是很好的。但是如果您需要几个,这种技术会有点麻烦。

这取决于您设置的JavaScript环境。在某些环境中,您唯一的选择是使用具有所有函数的全局下划线(
\uu
)对象

当使用支持ES6模块的运行时或编译时环境时,可以像这样一次导入一个函数

import { cloneDeep } from 'lodash';
还是这个

import cloneDeep from 'lodash/cloneDeep'; 
甚至还有一个和


ES6模块选项可以帮助您为应用程序制作更小的捆绑包

前两个示例(两者都是等效的)依赖于编译一个较小的包


在第三个例子中,我们只包含我们需要的函数。但是,我们需要
npm安装--为我们想要使用的每个函数保存lodash.clonedeep

这与如何导入lodash有关。大多数情况下,人们都说,
import*as.\ufrom lodash
,因此整个lodash库都被
引用

但是,在您提供的示例中,它们只是按名称从lodash导入单个函数(其工作原理类似于-它将创建一个局部变量,其标识符与您正在提取的属性名称的标识符相同),因此不需要使用
\ucode>前缀

我更喜欢这样做:

import { find } from 'lodash';
var _ = { find };

var item = _.find(.....);
如果您使用的是TypeScript,
Partial
在这里很方便,如下所示:

var _:Partial<LoDashStatic> = {find};
var\uux:Partial={find};
这样,您就可以获得intellisense/类型安全性,而无需导入整个lodash库。另外,您的语法不会改变-它的前缀总是


我喜欢它加前缀的原因是,我可以保证导入的标识符不会与我拥有的任何本地标识符冲突。而且,我总是可以一眼就知道某个东西是否是lodash方法,而不必向上滚动并查看该文件的导入。

基本上是因为它看起来很酷。与通过前缀$调用Jquery的方法相同,lodash的前缀是u,因为它们不使用u。在您的链接中,他们只是从lodash导入了一个函数,而不是整个库
\uuu
是一个包含被调用方法的对象@Borjante这和看起来很酷无关。。。lol@mhodgeslodash这个名字的原因似乎是因为cool factor()——无论如何,在某种程度上。然而,你是对的,这个问题并不是关于“ES6模块选项可以帮助你为你的应用制作一个更小的捆绑包”。我认为这只适用于做摇树的捆绑机,对吗?我不认为默认情况下会发生这种情况。如果你从每个模块一个函数导入模块,根据定义,你将减少捆绑包,而不依赖于树抖动。啊,derp-我不知道为什么我没有看到这一点。。我想你刚才说的是从“lodash”导入cloneDeep
。是的,你是对的-我的错误。谢谢你的反馈。我更新了我的答案以澄清差异。
var _:Partial<LoDashStatic> = {find};