Со времени моего последнего поста в блоге я завершил еще одну версию любимого Ката калькулятора строк ​​с целью узнать больше о JavaScript ES6. Вы можете увидеть эту последнюю версию на моем Github здесь. Как всегда любой отзыв будет высоко ценится!

Ниже я поделюсь некоторыми трудностями и уроками, которые я испытал во время работы над ката.

Настроить

Хотя я обнаружил, что синтаксис ES6 намного чище и с ним проще работать, я боролся с первоначальной настройкой проекта. Я слышал о Вавилоне, но раньше не интегрировал его в проект. У меня было много неудачных попыток правильно настроить проект, просто чтобы правильно установить зависимости и запустить первый тест.

Проблема, с которой я столкнулся, заключалась в том, что многие ресурсы/учебники устарели и часто не разделяли настройку тестирования командной строки и браузера.

В конце концов я нашел эту бесценную статью Настройка инструментов тестирования JavaScript для ES6 Яни Хартикайнен. В статье дается столь необходимый пошаговый обзор зависимостей, которые вам нужно установить, а также объяснение того, что эти зависимости делают и зачем они вам нужны. Затем он дает представление о настройке различных сред тестирования и разделении командной строки и тестирования браузера. Это даже доходит до примера синтаксиса теста ES6. Благодаря этой статье я смог пройти свой первый тест — очень рекомендую!

Тесты

Я решил использовать Карму и Чай для своих тестов. Преимущество этого заключалось в том, что его было проще интегрировать, чем Jasmine, и он позволял мне запускать тесты в командной строке без необходимости устанавливать зависимости браузера, такие как webpack. Я сразу увидел, что работа с ES6 дала более чистый и менее подробный тестовый файл.

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

Одна проблема, с которой я столкнулся при тестировании, заключалась в правильной настройке сообщения об ошибке с использованием Mocha и Chai. Я забыл, что синтаксис ожидания и утверждения Chai не взаимозаменяем и что его нужно рассматривать как отдельную функцию! Благодаря любезной помощи Эли и Кристофа я в итоге смог пройти эти тесты.

Перечислимые функции

В моем последнем посте я использовал Lodash в своем проекте, чтобы использовать больше перечисляемых функций, чем (я думал) имеет Vanilla JS. Спасибо Rufus за указание на то, что мне не нужно использовать Lodash в моем проекте:

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

В этой версии я использовал ряд перечислимых функций JS Vanilla, включая сокращение и фильтрацию. Я нашел эту статью: .map, .reduce & .filter, о боже! от Dave Atchley действительно полезно прочитать, чтобы узнать больше о том, как правильно их реализовать.

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

Я хотел бы улучшить приведенные выше функции конвертера и checkForNegatives, поскольку ручное создание новых массивов и добавление в них возвращаемых значений похоже на запах кода. Я также не уверен, что варианты цикла for являются лучшими перечислимыми функциями для работы, но я не знал, как использовать условные операторы для других перечисляемых параметров. Я хотел бы лучше использовать карту, чтобы упростить эти функции и избежать множества условных операторов if. Любые советы по рефакторингу были бы замечательными!

Пряжа и шутка

Как упоминалось ранее, в будущем я хотел бы перейти к использованию пряжи. Однако для этого ката я обнаружил, что в большинстве руководств по ES6 используется NPM, поэтому я не рискнул и использовал NPM. В следующий раз я также хотел бы поэкспериментировать с Jest в качестве основы для тестирования, рекомендованной моим замечательным наставником Юхенией Герреро.

Это все на данный момент! Впереди еще посты на разные темы.