Цель: это руководство научит вас, как написать программу, которая принимает аргументы командной строки, используя 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. Вы уже знаете, чего ожидать, так что давайте перейдем к делу.
- Создайте новый файл с именем
hello-world.js
(для энтузиастов терминалов просто введитеtouch hello-world.js
) - Откройте этот файл в своем любимом текстовом редакторе и введите
console.log("hello world!");
в первой строке. Для тех, кто плохо знаком с javascript,console.log
печатает любую строку, которую вы передаете в качестве аргумента, аналогично функцииprint
в python. Продолжайте и сохраните этот файл. - Откройте или вернитесь к своему терминалу и измените каталог (cd) на то, где вы сохранили только что созданный файл javascript. Внутри терминала типа
node hello-world
(обратите внимание, что окончание файла .js не обязательно). Вы должны увидеть результатhello world!
в своем терминале. Поздравляем, вы только что создали и выполнили свою первую программу на Node.js.
Шаг 2: Process.argv и прием пользовательского ввода
Итак, мы знаем, как запускать программу node.js, но вход в консоль не очень полезен. Мы знаем, что большинство инструментов командной строки допускают ввод в той или иной форме (например, cd <some location>
). Как это сделать в Node.js?
Node.js предоставляет глобальную переменную под названием Process, которую мы можем использовать для получения информации от пользователя. Теперь посмотрим, как мы можем это сделать.
- Создайте новый файл с именем
hello.js
- Откройте этот файл, вставьте следующий фрагмент и сохраните файл.
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 за любой период времени. Итак, давайте напишем программу, которая манипулирует некоторыми значениями, предоставляемыми пользователем.
- Создайте новый файл с именем
add.js
- Откройте этот файл в текстовом редакторе и добавьте код, который принимает 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