12 вещей, которые нужно учитывать при оценке любой новой библиотеки JavaScript

1656540530 12 veshhej kotorye nuzhno uchityvat pri oczenke lyuboj novoj biblioteki

Содержание статьи

автор Саша Грайф

uR55jSCvz4zpeJa1ybairfJ8wHPNyvTn8FSP

Как узнать, следует ли инвестировать время в новую технологию?

Для опроса этого года State of JavaScript я хотел копнуть немного глубже и не только знать, какие инструменты и библиотеки люди используют, но и почему они ими воспользовались.

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

Пройдите викторину!

Чтобы вам было легче применить шкалу в любую библиотеку, я подготовил краткий тест, который проведет вас через все 12 факторов и даст вам окончательную рекомендацию:

➡️ Пройдите тест на 12 факторов

Если вы не уверены, что оценивать, просто сделайте это в знакомой вам библиотеке (React, Vue, jQuery…) и посмотрите, насколько хорошо у нее есть результаты!

BPHlsWqIAroX3tV0uIHmC0LZaMotfWjJsejy

Или вы можете прочитать дальше, чтобы узнать больше о каждом факторе и увидеть, как их можно применить.

Примечание. О состоянии опроса JavaScript

Как я уже упоминал, я сначала разработал эту шкалу как способ получить более подробные данные для ежегодного опроса State of JavaScript.

vidyXkeKU1T83ZLUYmmnMZbCzpp8mU2T813d

Если вы хотите внести вклад и помочь определить последние тенденции в экосистеме JavaScript, поучаствуйте в опросе!

Теперь вернемся к 12-балльной шкале.

Факторы

Вот полный список:

  1. ?️ Особенности
  2. ? Стабильность
  3. ⚡ Производительность
  4. ? Пакет Экосистема
  5. ? Cобщина
  6. ? Кривая учеба
  7. ? Документация
  8. ? Оснастка
  9. ?️ Рекорд
  10. ? Команда
  11. ⚖️ Совместимость
  12. ? Импульс

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

?️ Особенности

Первая причина, почему вы выбираете любую технологию, вероятно, это то, что она делает.

Но ключевой вопрос здесь – знать, как далеко идти. React является пожалуй самой популярной интерфейсной библиотекой на данный момент, но общая жалоба заключается в том, что она просто не делает достаточно, оставляя такие вещи, как маршрутизация и управление состоянием, посторонним библиотекам, таким как React-Router и Redux.

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

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

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

Опять же это все о поиске правильного равновесия!

Система подсчета баллов

  • A: Открывает вещи, которые раньше были невозможны.
  • B: Позволяет делать то же, что и раньше, но лучше.
  • C: Делает меньше текущих решений.

? Стабильность

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

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

А со стороны уровня данных система типов GraphQL тоже способствует тому, что все работает гладко.

Система подсчета баллов

  • A: Меньше ошибок и проблемы становится легче налаживать и решать.
  • B: Использование этой технологии не влияет на стабильность вашего программного обеспечения.
  • C: Новые ошибки и проблемы возникают как прямое следствие принятия технологии.

⚡ Производительность

Если вы когда-нибудь занимались боевыми искусствами, вы знаете, что одна из лучших возможностей, которую вы можете иметь на своей стороне скоростьа не сила.

Аналогично, все функции в мире не нужны, если ваше приложение загружается 15 секунд. К тому моменту пользователь уже закрыл вкладку, и вы проиграли бой еще до того, как он начался!

В экосистеме JavaScript не смотрите дальше, чем Preact, чтобы увидеть пример фокусировки на скорости: его API идентичен React, поэтому он не пытается конкурировать по мощности функций. Но благодаря тому, что он легче и быстрее загрузки, чем React, он сэкономит драгоценные миллисекунды и улучшит производительность веб-приложения.

Система подсчета баллов

  • A: Более легкий пакет, более быстрое время загрузки или другие улучшения производительности.
  • B: Использование этой технологии не влияет на производительность программного обеспечения.
  • C: Использование этой технологии заметно замедляет работу приложения.

? Пакет Экосистема

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

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

Система подсчета баллов

  • A: Экосистема имеет однозначное решение для общих проблем; посторонние пакеты хорошо обслуживаются и хорошо документированы.
  • B: Новая экосистема пакетов со многими новыми конкурирующими опциями.
  • C: Ни о какой экосистеме пакетов можно говорить, нужно много ручной работы.

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

PPAbpAV8OeyXs7HpsONNYQJOFjAbnJFB4CLu
Spectrum становится все более популярной серединой между чатами и традиционными форумами.

Также полезно иметь хранилище ответов Stack Overflow для поиска. И, конечно, ухоженная страница вопросов GitHub обязательна!

Система подсчета баллов

  • A: Форум и/или чат (Slack/Discord) с ежедневной активностью, проблемы GitHub решаются в течение дня. Многие ответили на вопросы Stack Overflow.
  • B: Форум и чат с нечастой активностью.
  • C: Нет сообщества за пределами GitHub.

? Кривая учеба

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

Около связанным (но иногда противоположным) понятием является кривая «усыновления». Когда он впервые был запущен, Meteor был чрезвычайно прост в использовании (по крайней мере, по сравнению с существующими альтернативами), но он требовал от вас принять весь его стек сразу, что очень усложняло его внедрение для существующих проектов.

React также известен своей грубой кривой обучения: для разработчиков, привыкших разделять HTML и JavaScript, использование JSX может быть трудным. Vue, с другой стороны, значительно облегчает работу без необходимости переосмысливать то, как вы думаете об интерфейсной кодировке.

Система подсчета баллов

  • A: Начать работу можно за один день.
  • B: Чтобы стать продуктивным, нужно примерно неделю.
  • C: Чтобы выучить основы, нужно больше недели.

? Документация

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

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

gx6MSYtn9YlONOliEwLA07k0hQPzKuv7pldZ
Документация Vue.js хорошо разработана и написана хорошо.

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

Учитывая все эти факторы, вы можете понять, почему хорошая документация – редкая и ценная вещь!

Система подсчета баллов

  • A: Специальный сайт документации, скринкасты, примеры проектов, учебные пособия, документация API и хорошо прокомментированный код.
  • B: Основная документация Read Me и API.
  • C: Очень кратко Read Me, единственный способ узнать, как пользоваться библиотекой, – это посмотреть на ее код.

? Оснастка

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

W5mW8fZMfEEVdmMf5XPdtfSSsNtptGDlOamo
Одни только инструменты DevTools от Redux делают это заслуживающим внимания.

Я считаю, что важной причиной успеха Redux является его удивительное расширение для браузера Devtools, которое позволяет представить магазин и действия Redux очень удобным для пользователя способом. Аналогично, отличная поддержка TypeScript в VS Code совершила чудеса для его принятия.

Система подсчета баллов

  • A: Два или более: расширение для браузера, расширение текстового редактора, утилита CLI, специализированные сторонние сервисы SaaS.
  • B: Одно из: расширение для браузера, расширение текстового редактора, утилита CLI, специализированные посторонние услуги SaaS.
  • C: Без наружного инструмента.

?️ Рекорд

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

Мы все можем рассказать истории о принятии «следующей великой вещи», только чтобы вернуться к старым добрым Rails/PHP/*вставьте сюда проверенную технологию*, когда все начинает плохо.

1AaI7f2T0wZ6-AW4G9g1falTwSWg0OEIK48g
Экспресс: все еще претендент даже после всех этих лет

По этой причине ничто не может превзойти надежный послужной список. Одним из примеров является Express: он был первоначально выпущен в 2010 году, но все еще считается платформой сервера Node.js по умолчанию, невзирая на быстрый темп экосистемы JavaScript.

Система подсчета баллов

  • A: Работает более 4 лет, принял мои крупные компании и известные технические консультации.
  • B: Используется в течение 1–4 лет, использовался ранними пользователями и небольшими консультантами.
  • C: Есть меньше года, настоящего усыновления еще нет.

? Команда

Не у всех проектов есть послужной список. Когда библиотека нова, как вы оцениваете ее потенциал? Один надежный способ посмотреть, кто за этим стоит.

Когда React впервые вышел, тот факт, что за ним стоял не кто иной, как Facebook, был серьезным аргументом по крайней мере попробовать его. Затем Facebook выпустил Relay и GraphQL, показав, что успех React не являлся случайностью!

cDZb2K2jI518D0NmjO1FX68-LkbJPqHHpe8h
Google Open Source: более 2000 проектов для настольных компьютеров, мобильных устройств.

Более крупные компании имеют больше ресурсов для инвестирования: Google смог продолжать поддерживать оригинальный Angular.js даже после выпуска новых, несовместимых версий.

Конечно, это не значит, что одинокие сопровождающие не могут также создавать серьезные инновации. В конце концов так родился Vue.js, не говоря уже о 99% всего программного обеспечения с открытым кодом.

Система подсчета баллов

  • A: Поддерживается обширной компанией со специальной командой с открытым кодом.
  • B: Поддерживается средней командой инженеров с индивидуальным послужным списком.
  • C: Одинокий сопровождающий, работающий самостоятельно.

⚖️ Совместимость

Прекрасное преимущество использования передовых библиотек состоит в том, что они обычно развиваются достаточно быстро. К сожалению, это тоже может быть серьезным недостатком!

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

React Router вызвал много нареканий, когда они решили полностью изменить свой API между версиями 3 и 4. Так же поступил и Angular, когда они перешли из Angular.js на новый просто Angular.

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

Система подсчета баллов

  • A: Обновления в основном имеют обратную совместимость, прекращение поддержки обрабатывается с помощью предупреждений, а более несовместимые более старые версии сохраняются в течение двух лет или более.
  • B: Кардинальные изменения происходят, но они хорошо документированы и внедряются постепенно.
  • C: Частые аварийные обновления, требующие серьезного рефакторинга без должного руководства.

? Импульс

Последнее, но не менее важное, импульс. Другими словами, ажиотаж.

Хайп часто воспринимается как плохая вещь («не становитесь жертвой шумихи»), как индикатор стиля, а не содержания. Но это не всегда должно быть.

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

FEHGvt7qEHqpX68FPpXtVLep1wkX9CcN8RuY
JavaScript Rising Stars, наш проект, показывающий рост популярных библиотек JavaScript

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

Система подсчета баллов

  • A: Hype Level Over 9000: топ Hacker News, тысячи звезд GitHub, выступления на больших конференциях.
  • B: Некоторый интерес к первому запуску, сотен звезд GitHub.
  • C: Одинокий разработчик работает в без вести. Однажды я им покажу! Я покажу их всем!

Обновление: еще несколько факторов

Некоторые из вас предложили еще несколько отличных факторов, на которые стоит обратить внимание. Что следует рассмотреть для потенциальной версии 2.0 шкалы!

  • Масштабируемость: как хорошо технология работает для больших проектов.
  • Усыновление: кто еще использует эту технологию сейчас?
  • Совместимость: насколько хорошо эта технология работает с другими существующими технологиями?
  • Разъединение: как легко выйти из технологии, если вы хотите прекратить ее использовать?

Пример: клиент Apollo

Давайте проверим нашу систему оценки, применив ее к реальной библиотеке: Apollo Client.

XXcqlgMj6hXveo-8JWEyXxCHu09aklqzP6Oi
Клиент Apollo

Apollo — это клиент GraphQL, то есть библиотека, которая будет запрашивать конечную точку GraphQL и загружать ее данные на клиента для вас. Он также обрабатывает такие вещи, как кэширование, убеждение, что данные не дублируются, и отправка этих данных в выбранную вами интерфейсную библиотеку.

Давайте посмотрим, как это работает в нашей системе подсчета баллов!

?️ Особенности: B

Apollo дает вам лучшие способы запроса данных, поэтому это скорее постепенное усовершенствование по сравнению с существующими инструментами.

? Стабильность: А

Применение Apollo и GraphQL упрощает рассмотрение ваших данных и отслеживание заморочек.

⚡ Выполнение: B

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

? Пакет Экосистема: A

Apollo поддерживает пакеты, называемые ссылками, чтобы включить дополнительные функции.

Apollo действительно имеет очень активную чат-комнату Slack, но, как свидетельствуют мои вопросы, иногда остаются без ответа, и может быть трудно получить ответы от занятых членов основной команды.

? Кривая обучение: B

Изучение всех нюансов Apollo действительно может быть сложной задачей, особенно если вы одновременно учитесь использовать GraphQL.

? Документация: А

Хорошая хорошо поддерживаемая документация предоставляется для нескольких интерфейсных фреймворков, а также примеры кодовых баз.

? Инструменты: А

Расширение для браузера и специальная платформа метрика.

?️ Послужной список: B

Сам Apollo все еще достаточно новый, но также и пространство GraphQL в целом.

? Команда: А

Высококомпетентная и хорошо финансируемая команда по опыту запуска других проектов с открытым кодом (Meteor).

⚖️ Стабильность: B

Нарушено обновление с v1 до v2, но в целом хорошая стабильность и обратная совместимость с тех пор.

? Импульс: В

Аполлон, возможно, еще не популярно имя, но он является доминирующим игроком в своей нише, несмотря на фору Relay.

Общая оценка: A ?

Имея 29 баллов из максимальных 36, Apollo в конечном итоге делает очень хорошо! Даже если всегда будут области для усовершенствования, легко понять, почему он был принят в производство многими командами, которым нужен надежный способ работы с данными GraphQL.

Другие подходы

Люди с NPMS ввели подобную систему рейтинга, автоматизированную на основе просмотра данных GitHub и NPM. Это делает их оценку менее субъективной, но, с другой стороны, она не включает такие вещи, как документация или сообщество.

На стороне необработанных данных вы также можете получить крутые статистические данные с помощью NPM Trends:

9kWi9wu6EnMAdvS80GTY8QkczMZFfopW40bv
НПМ Тенденции

И узнайте больше о том, какие библиотеки сейчас популярны в Best of JS:

Zmb9zNPTaMXGupSBBzzIo2rroBrMfw2RAMbR
Лучшее из JS

И, конечно, всегда есть результаты прошлогоднего опроса State of JS:

0L1S4aGClqR8O8vKhUFrGICcZ-56yBfZzWuZ
Результаты опроса о состоянии JavaScript 2017 года

А вы как обычно оцениваете библиотеки? Оставьте комментарий, чтобы сообщить мне!

Вывод

Эта шкала отнюдь не является абсолютной мерой ценности библиотеки. В конце концов, это будет преимущественно субъективным и сильно зависит от вашего проекта и ваших потребностей.

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

Добавить комментарий

Ваш адрес email не будет опубликован.