require() 调用后的 JavaScript 语法是什么?
What's the JavaScript syntax after the require() call?
以下代码来自我关注的 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.
的新手
试着给每个部分命名来搞清楚:让我们这样说吧:
var args = tmp(v1, v2);
如您所见,那显然是一个函数调用。对吗?
现在,想象一下:
var tmp=require("minimist");
var v1=process.argv.slice(2);
var v2={ string: "name"};
现在你明白了:tmp
- 即 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
您可以像这样使用它:
var arg = require('./minimist.js')("Hello") // calls the function minimist.js exported
minimist是一个解析命令行参数的包,它导出了一个函数。
require('minimist')
将 return 类似于 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" }
您可以从 minimist 文档中找到以下内容
opts.string
- a string or array of strings argument names to always treat as strings
这意味着您的 'name' 参数将被接受为字符串。来自上面的例子:
name = '123' // not 123
希望您现在已经清楚了。如果有什么不对,请评论。
以下代码来自我关注的 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.
的新手试着给每个部分命名来搞清楚:让我们这样说吧:
var args = tmp(v1, v2);
如您所见,那显然是一个函数调用。对吗?
现在,想象一下:
var tmp=require("minimist");
var v1=process.argv.slice(2);
var v2={ string: "name"};
现在你明白了:tmp
- 即 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
您可以像这样使用它:
var arg = require('./minimist.js')("Hello") // calls the function minimist.js exported
minimist是一个解析命令行参数的包,它导出了一个函数。
require('minimist')
将 return 类似于 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" }
您可以从 minimist 文档中找到以下内容
opts.string
- a string or array of strings argument names to always treat as strings
这意味着您的 'name' 参数将被接受为字符串。来自上面的例子:
name = '123' // not 123
希望您现在已经清楚了。如果有什么不对,请评论。