TGViewer
dev.easy dev.easy @dev_easy · 135 subscribers
Post #7 113
И начнем мы с рефакторинга...

Есть в нашем React приложении текстовый редактор(WYSIWYG на минималках), написан он на SlateJS. SlateJS - оч крутая либа, я бы даже сказал фреймворк(со встроенной поддержкой React'а) для сложных текстовых редакторов типа гугл доков. Он полностью на TS, неплохой API, правда дока немного хромает, но это ниче, после DraftJS это как глоток свежего воздуха.

Так вот, прилетела таска - добавить новый функционал, пофиксить пару мелких багов, реюзнуть в новых местах, ну в целом все как обычно. Первым делом что я сделал - это обновил Slate до последней версии, читанул чендж логи, дабы убедится что нет breaking changes, типичный флоу обновления либы.

После апдейта начал рефачить. Разбил все по плагинам, улучшил API редактора, вроде как сделал крутой реюзабл компонент с возможностью кастомизации - убил пол дня. Ближе к часам 4 вечера начал тестить, qa у нас нет. Через минут 20 нашел, что отвалился "FakeSelection" плагин. Это такая штука которая эмулирует выделение текста, когда теряется фокус редактора. Например что бы сделать выделенный текст ссылкой нужно отобразить поле для ввода ссылки, т.к. в браузере только 1 элемент может быть в фокусе, то при вводе ссылки, фокус с редактора теряется, следовательно, и выделение текста тоже, а юзику нужно показать к чему эта ссылка будет добавлена, вот тут в дело и вступает этот плагин. Начал я инвестигать что же идет не так, потратил часа 4, нагородил каких-то хаков, откатил часть изменений, перепроверил все по 10 раз, а оно все не заводится. В 8 вчера вспомнил что перед рефакторингом я обновил Slate, откатился на старую версию и оп, все работает! РАБОТАЕТ!!! Бомбит до сих пор, кучу времени убил...

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

#рефакторинг #обновления #зависимости
More from @dev_easy
  1. Nov 12, 2021🦾 local env на стиройдах Как я уже упоминал несколько раз, весь наш бэкенд построен на ми…
  2. Oct 25, 2021⚛️ неочевидный react Похоже, далеко не все понимают как работает React, в частности: конте…
  3. Oct 14, 2021🚐 лайфхаки ревью В стартапе где я работаю нет тестировщиков, от слова вообще. Мы, конечно…
  4. Oct 6, 2021🔫 самое коварное CSS свойство Пару недель назад наш дизайнер завел ишью, мол у него в хро…
  5. Sep 23, 2021🗽vite - будущее уже здесь Сегодня знаменательный день, мы переехали с webpack5 на vite. З…
  6. Sep 16, 2021🎃 react-redux и connect-хелл На днях разговаривая с коллегами и друзьями осознал что дале…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →