【问题标题】:What's the JavaScript syntax after the require() call?require() 调用后的 JavaScript 语法是什么?
【发布时间】:2018-10-21 03:25:41
【问题描述】:

以下代码来自我正在学习的 Node.js 课程:

var args = require("minimist")(process.argv.slice(2), { string: "name"});

我知道正在导入一个模块,但我不明白require() 调用之后的第二组括号:

require("minimist")(this part I don't understand)

具体来说,第二组括号的语法是什么?

我知道slice() 是如何工作的,并且我知道string: "name" 创建了一个命令行参数来检查,但是通过require() 调用调用了什么方法,以及如何调用?

PS:课程(by Kyle Simpson)表示上面的语法稍后会解释,但我一直找不到具体的部分,我不喜欢在不了解的情况下继续进行。我是 JS 和 Node.js 的新手。

【问题讨论】:

  • @ptts 该链接涵盖了 argv。我知道如何将 argv 传递给进程。我的问题与我在问题中详细解释的语法有关(至少我认为我说清楚了)。

标签: javascript node.js requirejs minimist


【解决方案1】:

在这种情况下,您需要的模块看起来只是返回一个您立即使用 () 调用并传入两个参数的函数:process.argv.slice(2){ string: "name"}

如果你的模块看起来像这样:

// minimist.js
function test(str){
    console.log(str)
    return "Called with:" + str
}
module.exports = test;  // exports the function

你可以像这样使用它:

var arg = require('./minimist.js')("Hello") // calls the function minimist.js exported

【讨论】:

  • 好的,我理解你的例子。 SO一允许我就接受。谢谢你。不知道 module.exports,所以也谢谢你。
【解决方案2】:

尝试命名每个部分以弄清楚:让我们这样说:

var args = tmp(v1, v2);

如您所见,这显然是一个函数调用。对吧?

现在,想象一下:

var tmp=require("minimist");
var v1=process.argv.slice(2);
var v2={ string: "name"};

现在你明白了:tmp - 即slice()- 返回的值必须是一个接受两个参数的函数

【讨论】:

    【解决方案3】:

    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' 参数将被接受为字符串。从上面的例子:

    name = '123' // not 123
    

    希望你现在清楚了。如有不妥请评论。

    【讨论】:

    • 非常感谢 Rashad,Təşəkkür edirəm。现在真的很清楚了。
    猜你喜欢
    • 2014-12-01
    • 2020-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-02
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多