nodejs require 一个包的时候, _ 是什么意思?

2021-03-25 17:09:49 +08:00
 DinoStray

比如
const _ = require('lodash')
为什么不给它起名字, 要用 _ ?
我可以多个包引入都用 _么? 还是一个文件里只能用一次 _?

另外

if (_.includes(process.argv, '-h') || _.includes(process.argv, '--help')) {
  help()
  process.exit(0)
}

后面这里用到了 _.includes, 和前面那个 require 是因果关系么?

1178 次点击
所在节点    问与答
6 条回复
ohoh
2021-03-25 17:15:07 +08:00
这不就是起了个名字吗, 你将 _ 定义为 dog 也行啊, 后面就是 dog.includes()
morethansean
2021-03-25 17:16:41 +08:00
"low dash",而且本身由来好像也是 a lightweight alternative to "underscore" 吧? No offense 但老哥你这问题提得有点让人觉得是不是应该先学一下 js 啊?😂
nbhaohao
2021-03-25 17:17:32 +08:00
_ 本身只是一个符合 JavaScript 变量命名的一个名字,因为有些库被非常多的人使用,所以库在开发出来后,官方文档种的例子中给它取了个“官方的名字”,比如 jQuery 就会是 `const $ = require('jQuery')`,当然 jQuery 不能在 nodejs 中使用,不过这里只是一个例子。以后看到 `$` 就会想到 jQuery 。
总结来说,是一种约定俗成,以后你在任何项目种看到 _ 这个名字的时候,就会想到:哦,这个项目使用了 lodash 。
当然你不喜欢,换个文字完全是一样的。

另外根据你的「为什么不给它起名字, 要用 _ ?」描述,说明楼主也知道 “_” 表示忽略这个参数,即不得已产生的变量,大家可以忽略它,这也是一种约定俗成。

所以 "_" 是一个变量名,而这个变量指向一个对象,所以就可以调用它的 `includes` 方法
DinoStray
2021-03-25 17:25:36 +08:00
@nbhaohao 谢谢老哥, 原来每个库都有自己的缩写, 我懂了
zythum
2021-03-25 19:03:47 +08:00
@DinoStray 只是约定俗成的名字,lowDash 是一个 api 仿照 underscore 的库,你看这两个库的名字,不就是下划线嘛... > _ <
SoloCompany
2021-03-25 21:10:58 +08:00
underscore 这个词语就是 '_' 符号
dash 则是 '-' 符号
lodash 这个词语是造出来的, 就是 lo-dash 相当于 '-' 符号往下降低一些就是 '_' 了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/765102

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX