Возможно кому-то будет полезен мой алгоритм выбора библиотеки под задачу. Пример — поиск WYSIWYG-редактора для веб-системы, это текстовый редактор на JS/HTML/CSS с возможностью форматирования текста, добавления изображений, видео, блоков с кодом с подсветкой синтаксиса и возможно других кастомных блоков.



Этот алгоритм, конечно, может быть перенесён и на поиск любой другой библиотеки.



Шаг 1



Ищем доступные варианты, из которых выбираем. Google, вопросы знакомым, опросы. Всё найденное сводим в табличку. По редактору я создал такую табличку с пока что одной вкладкой «Первичный отсев».



Шаг 2



Вырабатываем критерии первичного грубого отсева библиотек. Составляем перечень верхнеуровневых требований к библиотеке, добавляем соответствующие столбцы в таблицу. В моём случае этот перечень:



1. Есть ли большие внешние зависимости у редактора? Если есть — для меня это минус. Верю всей душой, что при должной сноровке, терпении и упорстве можно написать редактор на плюс-минус Vanilla JS и потому редакторы, тянущие мегабайты лишнего хлама, идут топ-топ лесом.

2. Современный ли UI у библиотеки. Субъективно. Современный UI как по мне в Notion.

3. Позволяет ли лицензия редактора мне использовать её в своём проекте. Если не позволяет — значит опять же топ-топ.

4. Количество звёздочек на GitHub. Много — хорошо, мало — возможно тоже хорошо:)



Шаг 3



Заполняем значения критериев по каждому из вариантов.



Анализ



Это именно первичный отсев. Если критериев тут много, можно задать каждому критерию свои весовые коэффициенты, чтобы вывести общий коэффициент крутости конкретного варианта для вашей задачи. Но на первичном отсеве я бы не делал миллиард критериев. Тут задача быстро фильтрануть совсем лишнее.



У меня было 11 вариантов. Из них три отсеялись сразу (Draft.js, Outline editor, Thinkific — что-то не так с лицухой, зависимостями и тп). Осталось 8. Часть редакторов имеют субъективно не лучший для меня UI, их тоже отметаем. Допилить их наверняка можно, но не вижу смысла тратить на это время. Уходит Trix, Summernote, ProseMirror. Осталось 5.



Оставшиеся сортируем по какому-то количественному критерию — например, по GitHub-звездочкам. На крайняк по первичному личному впечатлению, завязанному на интуицию. Получаем: Quill, Slate, Editor.js, Tiptap, ToastUI Editor. Дальше будем смотреть их уже подробнее на предмет более конкретных параметров — документация, нужные в проекте технические особенности (возможность легкой интеграции syntax highlight в нашем случае) и тп. Пробуем подключить в проект, тестим нужные фичи. Изучаем именно в порядке выстроенного приоритета. Первое понравившееся и всем устроившее — берём.



Вжух!



#IT #frontend #javascript #typescript