Это пост №68 из серии, посвященный изучению JavaScript и его строительных компонентов. В процессе определения и описания основных элементов мы также поделимся некоторыми практическими правилами, которые мы используем при создании SessionStack, инструмента JavaScript для разработчиков, позволяющего идентифицировать, визуализировать и воспроизводить ошибки веб-приложений посредством воспроизведения сеанса с точностью до пикселя.

Введение

Интерфейс командной строки (CLI) — это инструмент, который принимает текст в качестве ввода от пользователей. Эти текстовые вводы представляют собой команды пользователя, которые выполняются компьютером. В первые дни до изобретения мыши интерфейс командной строки использовался для ввода необходимых компьютерных команд.

Однако использование CLI развивалось. Например, операционные системы (ОС) реализуют интерфейс командной строки в оболочке для выполнения административных задач. Хотя появление графического пользовательского интерфейса (GUI) может показаться альтернативой интерфейсу командной строки, CLI по-прежнему широко используются. Например, большинство административных задач, функций установки и доступа, которые не доступны в графическом интерфейсе, требуют взаимодействия с интерфейсом командной строки.

В этой статье мы рассмотрим CLI, его эволюцию, использование и способы создания интерактивного интерфейса командной строки с помощью Node.js.

Что такое CLI, эволюция CLI

CLI — это текстовая программа, которая позволяет пользователям инструктировать компьютеры с помощью текстовых команд. Он используется для запуска программ, управления компьютерными файлами, а также для взаимодействия с компьютерами. CLI принимает ввод текста как команды и запускает эти команды для выполнения определенных задач.

А для взаимодействия с операционной системой с помощью интерфейса командной строки нужно использовать оболочку. Оболочка — это программа, обеспечивающая доступ к компонентам операционной системы. В современных операционных системах есть два типа оболочки: оболочка CLI, которая позволяет пользователям взаимодействовать с ОС (операционной системой) с помощью команд, и оболочка графического интерфейса пользователя (GUI), которая позволяет пользователям взаимодействовать с ОС. с помощью графического интерфейса.

В начале 1960-х, до появления компьютерной мыши, единственным способом связи с компьютером были компьютерные терминалы. И эти команды передавались на компьютер с клавиатуры через интерфейс Command-Line. В 1970-х годах были представлены оболочка Unix и оболочка Bourne. Ниже приведены некоторые операции CLI, характерные для трех основных операционных систем:

Команды командной строки Linux

Команды терминала MacOS

Команды командной строки Windows

Зачем вам нужен интерфейс командной строки

В последнем разделе мы рассмотрели эволюцию CLI. Однако нам еще предстоит ответить на один вопрос: зачем нам нужен CLI в современном мире компьютеров, таких как наш, где у нас есть графический интерфейс. Вот несколько причин, по которым вам нужен интерфейс командной строки.

  1. GUI может не обладать такой же гибкостью, как интерфейс командной строки. Например, графические интерфейсы не поддерживают сценарии и автоматизацию. Навигация по файлам и папкам может потребовать многочисленных кликов и диалоговых окон, в то время как вы можете выполнить ту же функцию с помощью всего одной командной строки.
  2. Интерфейс командной строки по-прежнему широко используется, особенно разработчиками программного обеспечения и системными администраторами для настройки компьютеров. Например, менеджеры пакетов, такие как npm, поддерживают только CLI. А некоторые установки можно выполнить только из CLI.
  3. Интерфейс командной строки упрощает управление и настройку системы, поскольку с помощью простой команды командной строки можно быстро настроить конфигурации для большой группы систем одновременно.
  4. Базовые знания команд CLI могут помочь в устранении проблем с сетевым подключением.

Как создать интерфейс командной строки с помощью Node.js

Node.js — это внутренняя среда выполнения JavaScript, которая выполняет код JavaScript вне веб-браузера. Это позволяет разработчикам писать инструменты CLI для сценариев на стороне сервера. Мы используем Node.js из-за его поддержки экосистемы и обширных библиотек, к которым мы можем получить доступ с помощью npm.

В этом разделе мы рассмотрим создание CLI с помощью Node.js. Мы создадим инструмент, который поможет инженерам переводить тексты на их родной язык. Следовательно, мы избавляемся от кликов и хлопот, необходимых при настройке переводчика через графический интерфейс. А для этого нам нужно настроить нашу рабочую среду. Сделаем это в следующем подразделе.

Установка и настройка

Чтобы создать CLI с Node.js, вам необходимо установить Node.js. Следуйте этому руководству, чтобы загрузить и установить Node.js в вашей локальной среде. Нам также понадобится текстовый редактор для написания наших кодов.

Затем выполните приведенную ниже команду, чтобы создать папку приложения для нашего проекта переводчика.

mkdir translator-cli

Теперь перейдите в каталог проекта.

cd translator-cli

Инициализируйте проект с помощью NPM, выполнив:

npm init

Вам будет задано несколько вопросов, таких как название вашего пакета и т. д. Заполните соответствующую информацию. Обратите внимание, что был сгенерирован файл package.json.

Теперь давайте напишем логику нашего CLI.

Написание логики

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

Теперь создайте папку bin в корне вашего проекта. В папке создайте файл app.js. Откройте файл package.json в редакторе и замените часть main на bin/app.js.

Эта настройка позволит Node.js узнать, что точка входа нашего проекта — app.js.

Далее мы создадим ключевое слово для вызова нашего CLI. А для этого добавим в наш файл package.json следующую запись.

Свойство translator-cli — это ключевое слово, которое пользователи будут использовать для вызова нашего CLI, а значение ./bin/app.js указывает ключевое слово на наш файл точки входа, который будет содержать нашу логику CLI.

Добавьте следующие строки в файл app.js в папке bin.

Первая строка приведенного выше кода является экземпляром строки Шебанга. И это первая строка в исполняемом текстовом файле на Unix-подобных платформах. Он сообщает системе, какому интерпретатору передать этот файл для выполнения. Мы также говорим нашему пакету печатать translator-cli в консоли, когда мы запускаем ключевое слово translator-cli.

Однако, если мы попытаемся запустить наш проект, выполнив наш входной файл с node ./bin/app.js, вы поймете, что текст translator-cli очень простой.

Мы можем украсить это, используя библиотеку figlet. А для установки figlet выполните команду ниже:

npm install figlet

Теперь импортируйте библиотеку figlet в наш пакет, добавив строку ниже в начало вашего файла app.js.

const figlet = require(“figlet”);

И замените часть console.log файла app.js кодом ниже:

Обратите внимание, что когда вы запускаете пакет, напечатанный ответ CLI выглядит красивее.

Аргументы командной строки

Хотя у нас есть базовая часть CLI, что такое CLI без возможности управлять аргументами? В этом разделе мы полностью реализуем наш инструмент переводчика. В Node.js есть несколько библиотек, таких как commander и yargs, которые позволяют правильно управлять аргументами командной строки.

Чтобы установить commander, выполните следующую команду:

npm i commander

Далее мы импортируем и настроим библиотеку commander, как показано ниже:

Далее мы установим пакет vitalets/google-translate-api через npm, запустив:

npm install @vitalets/google-translate-api

Пакет vitalets/google-translate-api NPM, перевод предложений с помощью функции translate. И функция перевода принимает два аргумента:

  1. Предложение для перевода — — как строка
  2. Объект параметров, содержащий такие свойства, как from и to. Значение этих свойств представляет язык, с которого мы переводим, и язык, на который мы переводим.

Например, мы можем перевести предложение с французского на английский с помощью приведенного ниже примера.

Однако эта библиотека предлагает автоматическое определение языка, поэтому мы воспользуемся этим. Поэтому вместо указания языка from и to мы предоставим только язык to, а vitalets/google-translate-api обнаружит наш язык from.

Теперь импортируйте библиотеку vitalets/google-translate-api в наш интерфейс командной строки. И добавьте следующий код в ваш файл bin/app.js.

const translate = require(‘@vitalets/google-translate-api’);

Затем мы добавим метод .action в наш файл .bin/app, в раздел // Help options и перед методом program.parse();.

Теперь, когда пользователь запускает приведенную ниже команду, он должен получить вывод, подобный изображенному ниже:

node ./bin/app.js translate en ‘Je parle Anglais’

Обратите внимание, что кавычки вокруг предложения заключаются в том, что наш интерфейс командной строки распознает Je parle Anglais как предложение, а не разбивает его на команды или параметры.

Хотя это отличный пример, иллюстрирующий создание интерфейса командной строки с помощью Node.js, мы можем сделать его лучше.

Например, мы можем написать точные сообщения об ошибках в служебном или вспомогательном файле, чтобы правильно передать ошибки. И это полезно в нашем приложении, потому что библиотека vitalets/google-translate-api поддерживает только iso языков. Поэтому, если я использую французский как язык from вместо fr, это выдаст ошибку.

Другой пример: язык поддерживает только максимальную длину текста для одного вызова перевода, равную 5000 символов. Таким образом, пользователям приходится разбивать свои предложения на несколько пакетов, если они превышают 5000 символов. Поэтому мы можем добавить сообщение об ошибке или описание, объясняющее, что пользователи могут вводить более 5000 символов в пакете.

Заключение

CLI или интерфейс командной строки — важный инструмент для обычных пользователей. И это потому, что он помогает общаться с операционной системой и быстро выполняет задачи, передавая команды. Хотя CLI важны, это не ложе из роз. Например, он не удобен для пользователя и требует более крутых кривых обучения.

В этой статье мы говорили о CLI, а также об истории и эволюции CLI. Мы изучили некоторые команды CLI, характерные для определенной ОС.

Наконец, мы получили практический опыт создания собственного проекта CLI, создав проект, который помогает в начальной загрузке проекта и инициализации git.

Даже если вы чувствуете, что были приняты правильные решения, всегда необходимо убедиться, что это действительно так, и что ваши пользователи хорошо работают с вашим продуктом.

Такое решение, как SessionStack, позволяет вам просматривать сеансы пользователей в виде видеороликов, что позволяет вам точно видеть, что происходило во время их путешествия.

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

Существует бесплатная пробная версия, если вы хотите попробовать SessionStack.

Хотите узнать больше о JavaScript? Ознакомьтесь со всеми публикациями Как работает JavaScript здесь».