До 30 ноября

Скидки до 81 000 руб и вторая профессия в подарок!

Главная | Все статьи | Дневник студента

Как я прокачал свой первый проект по фронту

Время чтения статьи ~2 минуты
Статья написана студентом Хекслета. Мнение автора может не совпадать с позицией редакции
Как я прокачал свой первый проект по фронту главное изображение

Недавно я переписал свой первый проект на TypeScript, но не закончил работу над ним. Вооружившись полученными во время выполнения второго проекта знаниями, я возвращаюсь к «Играми разума».

Работа с Node.js и модулем Commander.js была очень интересной, поэтому я решил: «Почему бы мне не внедрить его и в первый проект?».

Подготовка

Unit-тесты я буду писать на TypeScript, поэтому сначала нужно подготовить среду. В частности, к jest-пакетам из второго проекта нужно будет добавить @types/jest.

Используем Commander.js

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

Немного переписал код, протестировал, все работает. Отлично!

А как же пользователь?

Хорошо, я знаю какие есть игры и как они называются, но что делать другим? Откуда пользователь узнает, что ему запускать?

Нужен вывод списка игр, но как его реализовать? В Commander.js есть встроенная опция --help, через которую можно показывать список. Но это неверный путь, он не логичен. Help должен выводить список опций и информацию о приложении, а не список игр. Что ж, открываю мануал.

Command

Идеальный вариант, простой и логичный, внедряю. Теперь список игр выводится простой командой brain-games list. Довольно лаконично. А так выглядит вывод команды brain-games -h:

Usage: brain-games [options] [command] 

A set of CLI arithmetic games

Options:
  -v, --version  output the current version
  -h, --help     read more information

Commands:
  list           list of games with description

Конец?

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

Для этого я использую следующие модули:

import { readdirSync } from "fs";
import { resolve, extname } from "path";
import { cwd } from "process";

Используя readdirSync, я получаю массив с названиями файлов в папке games для дальнейшей работы с ними. После этого я создал объект и интерфейс к нему для вывода списка игр с их описаниями.

Вот что у меня получилось:

$ brain-games list
calc: Arithmetic expressions that need to be calculated
even: Determining an even number
gcd: Determining the greatest common divisor
prime: Definition of a prime number
progression: Finding missing numbers in a sequence of numbers

Тесты

Для тестирования списка игр я решил использовать openSync и rmSync из fs. Во время теста создается файл и проверятся вывод списка игр, после файл удаляется.

Увы, мне удалось покрыть тестами только 59% кода. Довольно сложно тестировать то, что ничего не возвращает 😅.

Конец

На этом все. Теперь можно оставить первый проект в покое — добавлять в него уже нечего. Как обычно, прикрепляю ссылку на проект для самых любопытствующих. Мой проект.

Всем спасибо за внимание! 😊

P.S. А что если сделать Web-версию?

Аватар пользователя Шахзод Давлатов
Шахзод Давлатов 09 ноября 2021
5
Рекомендуемые программы
профессия
Осваивайте разработку веб-страниц, оживляйте дизайн макетов, публикуйте сайты и приложения. Отслеживайте ошибки в интерфейсе и устраняйте их
10 месяцев
с нуля
Старт 28 ноября
профессия
Обучитесь разработке бэкенда сайтов и веб-приложений — серверной части, которая отвечает за логику и базы данных
10 месяцев
с нуля
Старт 28 ноября
профессия
Выполняйте ручное тестирование веб-приложений, находите ошибки в продукте. Узнайте все о тест-дизайне.
4 месяца
с нуля
Старт 28 ноября
профессия
Научитесь разработке веб-приложений, сайтов и программного обеспечения на языке Java, программируйте и используйте структуры данных
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Собирайте, анализируйте и интерпретируйте данные, улучшайте бизнес-процессы и продукт компании. Обучитесь работе с библиотеками Python
9 месяцев
с нуля
Старт 28 ноября
профессия
Занимайтесь созданием сайтов, веб-приложений, сервисов и их интеграцией с внутренними бизнес-системами на бекенд-языке PHP
10 месяцев
с нуля
Старт 28 ноября
профессия
Создание веб-приложений со скоростью света
5 месяцев
c опытом
Старт 28 ноября
профессия
Обучитесь разработке визуальной части сайта — фронтенда, а также реализации серверной — бэкенда. Освойте HTML, CSS, JavaScript
16 месяцев
с нуля
Старт 28 ноября
профессия
Разработка бэкенд-компонентов для веб-приложений
10 месяцев
с нуля
Старт 28 ноября
профессия
новый
Организовывайте процесс автоматизации тестирования на проекте, обучитесь языку программирования JavaScript, начните управлять процессом тестирования
8 месяцев
c опытом
Старт 28 ноября