Какой синтаксис JavaScript после вызова require ()? - PullRequest
0 голосов
/ 20 октября 2018

Следующий код взят из курса Node.js, которому я следую:

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

Я понимаю, что модуль импортируется, но я не понимаю второй набор скобок после require() call:

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

В частности, что такое второй набор скобок с точки зрения синтаксиса?

Я знаю, как работает slice(), и я понимаю, что string: "name" создает командуСтроковый аргумент для проверки, но какой метод вызывается через вызов require() и как?

PS: курс (Кайл Симпсон) указывает, что приведенный выше синтаксис будет объяснен позже, но я нене смог найти конкретную часть, и я не хотел бы продолжать без понимания чего-либо.Я новичок в JS и Node.js.

Ответы [ 3 ]

0 голосов
/ 20 октября 2018

В этом случае похоже, что модуль, который вам требуется, просто возвращает функцию, которую вы немедленно вызываете с () и передаете два аргумента: 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
0 голосов
/ 20 октября 2018

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

Надеюсь, теперь вам ясно.Прокомментируйте, если что-то не так.

0 голосов
/ 20 октября 2018

Попытайтесь назвать каждую часть, чтобы понять это: Давайте скажем так:

var args = tmp(v1, v2);

Как видите, это явно функция, вызывающая .Правильно?

А теперь представьте, что:

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

Теперь вы получили это: tmp - то есть значение, возвращаемое slice() - обязательно должно быть функцией , который принимает два аргумента.

...