Това е публикация № 68 от поредицата, посветена на изследването на JavaScript и неговите съставни компоненти. В процеса на идентифициране и описване на основните елементи, ние също така споделяме някои основни правила, които използваме при изграждането на SessionStack, JavaScript инструмент за разработчиците за идентифициране, визуализиране и възпроизвеждане на грешки в уеб приложенията чрез перфектно повторение на сесията.

Въведение

Интерфейсът на командния ред (CLI) е инструмент, който приема текст като вход от потребителите. Тези текстови входове са команди от потребителя, които се изпълняват от компютъра. В първите дни преди изобретяването на мишката CLI се използваше за въвеждане на необходимите компютърни команди.

Използването на CLI обаче се разви. Например операционните системи (ОС) внедряват интерфейс на командния ред в обвивка, за да позволят изпълнението на административни задачи. Въпреки че появата на графичен потребителски интерфейс (GUI) може да изглежда като алтернатива на интерфейса на командния ред, CLI все още се използват широко. Например повечето административни задачи, инсталиране и функции за достъп, които не са в GUI, се нуждаят от CLI взаимодействие.

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

Какво е CLI, еволюцията на CLI

CLI е текстова програма, която позволява на потребителите да инструктират компютрите с текстови команди. Използва се за стартиране на програми, управление на компютърни файлове, както и за взаимодействие с компютри. CLI приема въвеждането на текст като команди и изпълнява тези команди за изпълнение на конкретни задачи.

И за да взаимодействате с операционна система чрез интерфейса на командния ред, трябва да използвате обвивка. Обвивката е програма, която осигурява достъп до компонентите на операционната система. Има два типа обвивка в съвременните операционни системи: CLI обвивката, която позволява на потребителите да взаимодействат с операционната система (операционна система) с помощта на команди, и обвивката на графичния потребителски интерфейс (GUI), която позволява на потребителите да взаимодействат с операционната система с помощта на графичен интерфейс.

В началото на 60-те години — — преди въвеждането на компютърната мишка, единственият начин за комуникация с компютър беше чрез компютърни терминали. И тези команди бяха предадени на компютъра от клавиатурата през интерфейса на командния ред. През 70-те години на миналия век бяха въведени Unix shell и Bourne shell. По-долу са някои CLI операции, специфични за три основни операционни системи:

Linux CLI команди

Терминални команди на MacOS

Windows CLI команди

Защо имате нужда от CLI

В последния раздел проучихме еволюцията на CLI. Въпреки това, един въпрос, на който тепърва ще отговаряме, е защо се нуждаем от CLI в модерен свят на компютри като нашия, където имаме GUI. Ето няколко причини да имате нужда от CLI.

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

Как да създадете CLI с Node.js

Node.js е back-end среда за изпълнение на JavaScript, която изпълнява JavaScript код извън уеб браузър. Той позволява на разработчиците да пишат CLI инструменти за скриптове от страна на сървъра. Ние използваме Node.js поради неговата екосистемна поддръжка и огромни библиотеки, до които можем да имаме достъп с npm.

В този раздел ще изследваме създаването на CLI с Node.js. Ще създадем инструмент, който помага на инженерите да превеждат текстове на техния роден език. Следователно, ние елиминираме кликванията и караниците, необходими при конфигурирането на преводач чрез GUI. И за да направим това, трябва да настроим нашата работна среда. Нека направим това в следващия подраздел.

Инсталиране и настройка

За да създадете 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.

Първият ред от кода по-горе е екземпляр на реда shebang. И това е първият ред в изпълним файл с обикновен текст на 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 в нашия CLI. И добавете следния код към вашия 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’

Обърнете внимание, че причината за цитата около изречението е нашият CLI да разпознае Je parle Anglais като изречение, а не да го разделя като команди или опции.

Въпреки че това е чудесен пример за илюстриране на създаването на CLI с Node.js, ние можем да направим това по-добро.

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

Друг пример е как езикът поддържа само максимална дължина на текста за едно извикване на превод като 5000 знака. Така че потребителите трябва да разделят изреченията си на множество партиди, когато са над 5000 знака. Следователно можем да добавим съобщение за грешка или описание, обясняващо, че потребителите могат да поставят повече от 5000 знака в партида.

Заключение

CLI или интерфейсът на командния ред е важен инструмент за обикновените потребители. И това е така, защото подпомага комуникацията с операционната система и изпълнява задачите бързо чрез предаване на команди. Въпреки че CLI са важни, това не е легло от рози. Например, той не е удобен за потребителя и също изисква по-стръмни криви на обучение.

В тази статия говорихме за CLI и историята и еволюцията на CLI. Разгледахме някои CLI команди, специфични за определени операционни системи.

И накрая, получихме практически опит как да създадем наш собствен CLI проект, като изградим проект, който помага при стартирането на проекта и инициализацията на git.

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

Решение като SessionStack ви позволява да гледате потребителски сесии като видеоклипове, което ви позволява да видите точно какво се е случило по време на тяхното пътуване.

Комбинирайки тази визуална информация с всички технически данни от браузъра като грешки, проследяване на стека, мрежови проблеми, данни за отстраняване на грешки и т.н., можете лесно да разберете проблемните области във вашия продукт и да ги разрешите ефективно.

Има безплатен пробен период, ако искате да „опитате SessionStack“.

Интересувате ли се от повече за JavaScript? Вижте всички публикации „Как работи JavaScript“ тук».