以下代码来自我正在关注的Node.js课程:
ByteData
我知道正在导入一个模块,但是我不理解var args = require("minimist")(process.argv.slice(2), { string: "name"});
调用之后的第二组括号:
require()
具体来说,第二个括号是什么语法?
我知道require("minimist")(this part I don't understand)
的工作方式,并且我知道slice()
创建了一个命令行参数来检查,但是通过string: "name"
调用将调用哪种方法,以及如何进行? / p>
PS:该课程(由Kyle Simpson撰写)表明,稍后将对上述语法进行说明,但是我无法找到特定的部分,并且我不喜欢在不了解某些内容的情况下继续进行。我是JS和Node.js的新手。
答案 0 :(得分:4)
在这种情况下,您似乎需要的模块只是返回一个函数,该函数立即用slice()
调用并传入两个参数:()
和process.argv.slice(2)
因此,如果您的模块如下所示:
{ string: "name"}
您可以像这样使用它:
// minimist.js
function test(str){
console.log(str)
return "Called with:" + str
}
module.exports = test; // exports the function
答案 1 :(得分:1)
尝试命名每个部分以找出答案:让我们这样说:
server <- function(input, output) {
out_plots <- eventReactive(input$ok_input, {
#### I call the function here and this is the variable I want
#### to make global ########################################
algorithm_output = some_global_function(3, 2, 1)
do.call("grid.arrange", c(algorithm_output$indexes, nrow=3))
})
output$indexes <- renderPlot({
out_plots()
})
out_means <- eventReactive(input$ok_means, {
k = as.integer(input$k)
#### I want to access the variable here ################
matplot(algorithm_output$means[[k-1]], type = "l", lty=1)
########################################################
})
output$means <- renderPlot({
out_means()
})
}
如您所见,这显然是函数调用。对吧?
现在,想象一下:
var args = tmp(v1, v2);
现在您已经明白了:var tmp=require("minimist");
var v1=process.argv.slice(2);
var v2={ string: "name"};
-即tmp
返回的值-必须是一个接受两个参数的函数。
答案 2 :(得分:1)
minimist是一个用于解析命令行参数的程序包,它可以导出函数。
require('minimist')
将返回类似function(args, opts={})
的函数。然后将参数传递给该函数。
第一个论点-process.argv.slice(2)
process.argv
是命令的一部分数组。例如,如果您输入终端机
node app.js --test -x 1 --name '123'
您的process.argv
将是一个数组
['node', 'app.js', '--test', '-x', 1, '--name', '123']
很明显您必须致电['node', 'app.js']
。因此,要获得选择,您必须使用.slice(2)
,它将是
['--test', '-x', 1, '--name', '123']
现在转到下一个...
第二个论点-{ string: "name" }
从简约文档中,您可以找到以下内容
opts.string
-始终视为字符串的字符串或字符串参数名称数组
这意味着您的“名称”参数将被接受为字符串。从上面的示例中:
name = '123' // not 123
希望现在对您来说很清楚。注释一下是否有任何内容。