Цель: это руководство научит вас, как написать программу, которая принимает аргументы командной строки, используя Node.js.
Аудитория: люди, которые никогда не писали ни одного узла. .js, но, в некоторой степени знакомы с терминалом и имеют некоторые базовые знания в области программирования.

Шаг 0: Настройка
В большинстве подобных руководств уже есть инструкции по настройке среды, поэтому я не буду здесь углубляться, но для непосвященных здесь приводится краткое изложение шагов, которые вы должны предпринять, и несколько релевантных ссылок:
1. Установите node.js

2. Подготовьте терминал (PowerShell, Gitbash, Mac-терминал и т. Д.)

3. Убедитесь, что node.js установлен, открыв терминал и набрав node -v в терминале (это руководство было написано с использованием v10.13.0)

4. Подготовьте любимый текстовый редактор (предпочитаю Visual Studio Code).

Шаг 1: ведение журнала консоли и Hello World
Ага, это еще одно приложение Hello World. Вы уже знаете, чего ожидать, так что давайте перейдем к делу.

  1. Создайте новый файл с именем hello-world.js (для энтузиастов терминалов просто введите touch hello-world.js)
  2. Откройте этот файл в своем любимом текстовом редакторе и введите console.log("hello world!"); в первой строке. Для тех, кто плохо знаком с javascript, console.log печатает любую строку, которую вы передаете в качестве аргумента, аналогично функции print в python. Продолжайте и сохраните этот файл.
  3. Откройте или вернитесь к своему терминалу и измените каталог (cd) на то, где вы сохранили только что созданный файл javascript. Внутри терминала типа node hello-world (обратите внимание, что окончание файла .js не обязательно). Вы должны увидеть результат hello world! в своем терминале. Поздравляем, вы только что создали и выполнили свою первую программу на Node.js.

Шаг 2: Process.argv и прием пользовательского ввода
Итак, мы знаем, как запускать программу node.js, но вход в консоль не очень полезен. Мы знаем, что большинство инструментов командной строки допускают ввод в той или иной форме (например, cd <some location>). Как это сделать в Node.js?

Node.js предоставляет глобальную переменную под названием Process, которую мы можем использовать для получения информации от пользователя. Теперь посмотрим, как мы можем это сделать.

  1. Создайте новый файл с именем hello.js
  2. Откройте этот файл, вставьте следующий фрагмент и сохраните файл.
const name = process.argv[2];
console.log("hello " + name);

Короче говоря, мы сохраняем значение, отправленное пользователем, в постоянную переменную, которую мы вызываем name, а затем записываем ее в консоль. Я призываю вас обдумать пару вещей, таких как ключевое слово const и конкатенация строк, но они выходят за рамки данного руководства.

3. Запустите программу, набрав node hello samantha в том месте, где вы сохранили файл. Вы должны обнаружить, что программа отвечает hello samantha. Затем вы должны повторить это, используя другое имя, чтобы подтвердить, что он захватывает вводимые пользователем данные. Аккуратный!

Шаг 3. Продолжение Process.argv…
Хорошо, с помощью process.argv есть что распаковать, но, если попытаться подвести итог, это массив значений, соответствующих значениям, введенным в команда.

Например; последняя программа, которую мы запускали, была node hello samantha, если вы console.log(process.argv) вы должны увидеть такие значения:

[ '/your/nodejs/installation/path', '/the/path/to/your/hello.js', 'samantha']

Благодаря этой функции вы можете включить практически столько аргументов командной строки, сколько вам нужно.

Шаг 4. добавление функциональности
В завершение этого руководства я хочу предоставить вам возможность прочитать более подробные руководства по node.js за любой период времени. Итак, давайте напишем программу, которая манипулирует некоторыми значениями, предоставляемыми пользователем.

  1. Создайте новый файл с именем add.js
  2. Откройте этот файл в текстовом редакторе и добавьте код, который принимает 2 значения и сохраняет эти значения в переменных.
const num1 = process.argv[2];
const num2 = process.argv[3];

3. Добавьте функцию, которая складывает эти значения вместе.

function add(param_num1, param_num2) {
    return param_num1 + param_num2;
}

4. Вызовите эту функцию и сохраните результат в переменной с именем sum.

const sum = add(num1, num2);

5. Записать сумму в консоль.

console.log(`sum: ${sum}`);

Теперь, если вы запустите программу, набрав в терминале следующее: node add 2 2, вы можете быть удивлены, увидев на экране число 22. Это потому, что Node.js может интерпретировать вводимые пользователем данные только как string тип данных. Типы данных в javascript могут быть немного сложными, если исходить из более строго типизированного языка, поэтому я настоятельно рекомендую просмотреть статью W3Schools на эту тему.

Чтобы решить эту проблему, мы можем изменить синтаксический анализ значений на числа, например

const num1 = parseInt(process.argv[2]);
const num2 = parseInt(process.argv[3]);

Итак, если мы запустим программу, мы должны увидеть ожидаемый результат 4.

** Примечание о функциях **
Функции могут принимать различные формы в javascript, и есть много способов их объявить. Для опытных разработчиков различия важны, но для новичков конечный результат в основном одинаков.

  • function(){ //some logic } - анонимная функция
  • function myFunction(){ //some logic } - это именованная функция
  • const myFunction = function(){ // some logic } также является именованной функцией
  • const myArrowFunction = () => { // some logic } - это именованная функция arrow

На вашем пути к изучению Node.js и javascript вы можете увидеть, как функции появляются в разных формах. Javascript менялся с момента его создания и, вероятно, будет продолжаться, пока старые руководства все еще будут в Интернете. Надеюсь, эта информация поможет понять, что в противном случае могло бы сбить с толку.

Репозиторий Github: https://github.com/Mikkal24/tutorials/tree/master/cli-part1