【问题标题】:What does ._[0] in args._[0] do?args._[0] 中的 ._[0] 有什么作用?
【发布时间】:2020-04-02 01:07:59
【问题描述】:

我一直在尝试一些节点代码(尝试构建一个小型 cli),并遇到了这个对我来说非常陌生的下划线符号。只是在命令行中使用不同的参数,

我意识到它类似于“提取”第一个字符串以分配给“模板”键,但我以前从未见过这个,也找不到关于此的文档。这是原生 javascript/node 的东西吗?

import arg from 'arg';

function parseArgumentsIntoOptions(rawArgs) {
 const args = arg(
   {
     '--git': Boolean,
     '--yes': Boolean,
     '--install': Boolean,
     '-g': '--git',
     '-y': '--yes',
     '-i': '--install',
   },
   {
     argv: rawArgs.slice(2),
   }
 );
 return {
   skipPrompts: args['--yes'] || false,
   git: args['--git'] || false,
   template: args._[0],                                // <<<<< Right here
   runInstall: args['--install'] || false,
 };
}

我没有安装 lodash 或 underscore。 取自awesome tutorial

【问题讨论】:

  • 我认为下划线是属性的名称。这个属性是一个数组。对象args = { '_': [] } 适合。
  • 这与 Node.js 没有任何关系。 argsarg() 函数返回的值(这不是标准的 Node.js 函数,但可能是外部依赖项)。快速浏览一下 npmjs.com 就会发现其可能的来源是 npmjs.com/package/arg
  • 该教程安装了一个名为 arg 的库。文档是here

标签: javascript node.js command-line-arguments


【解决方案1】:

来自arg 库的文档:

所有不被选项消耗的参数(通常称为“额外”参数)被添加到result._,它始终是一个数组(即使没有传递额外的参数,在这种情况下是一个空数组)返回)。

所以args._[0] 是第一个额外参数。

【讨论】:

    【解决方案2】:

    没关系。我第一次没有点击npm arg 库,这确实是我的only 导入模块,因为我出于某种原因搜索了node arg

    下划线实际上只是您指定的任何键未使用的其余参数的“容器”:

    选项不使用的参数(通常称为“额外”参数)添加到result._

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 2016-03-28
      • 1970-01-01
      • 1970-01-01
      • 2016-11-21
      • 1970-01-01
      • 2018-05-08
      • 1970-01-01
      相关资源
      最近更新 更多