Важное различие между AJV и Joi заключается в том, что AJV является валидатором схемы JSON, а Joi - валидатором JavaScript. Схема JSON является кроссплатформенной, а Joi работает только на JavaScript. Итак, это не выбор между AJV и Joi, а выбор между схемой JSON и Joi.
У каждого подхода есть свои компромиссы, поэтому выбор во многом зависит от вашей конкретной ситуации.
Схема AJV / JSON
Большой выигрыш, который вы получаете от схемы JSON, заключается в том, что она кроссплатформенная. Реализации валидатора схемы JSON существуют на всех основных языках программирования. Независимо от того, какой язык вы выберете, вы можете использовать одну и ту же схему JSON во внешнем и внутреннем интерфейсе и получить согласованные результаты проверки. Напишите один раз, подтвердите где угодно.
Обратной стороной является то, что, поскольку это кроссплатформенный, он также несколько ограничен в возможностях. Он намеренно сделан достаточно простым, чтобы его не было слишком сложно реализовать на любом языке программирования. Поскольку схема JSON не является полноценным языком программирования, ее возможности ограничены.
Вы можете выбрать схему AJV / JSON, если вы используете что-то другое, кроме JavaScript на бэкэнде, или ваше приложение представляет собой общедоступный API, который может использоваться любым количеством приложений на любом количестве языков.
Дзёи
Самым большим преимуществом Joi является удобство использования. Его легко использовать, легко расширять и в нем есть все возможности JavaScript.
Обратной стороной является то, что если вы хотите повторно использовать свою логику проверки во внешнем и внутреннем интерфейсе, единственный выбор языка для внутреннего интерфейса - это node.
Вы можете выбрать Joi, если используете JavaScript для интерфейса и серверной части и не ожидаете клиентов, отличных от JavaScript, которые вам необходимо поддерживать. Это довольно узкая ситуация, но если это ваша ситуация, вы, скорее всего, получите больше или Joi, чем AJV / JSON Schema.
Популярность
Звезды Github - не лучший показатель популярности. Если вы посмотрите на ежедневные загрузки npm, вы увидите совсем другую историю (AJV: 18,9 млн, Joi: 2,2 млн). Схема JSON используется гораздо более широко, потому что она кроссплатформенная. AJV - это всего лишь одна реализация на одном языке. Но если ваш стек разработки соответствует конкретной нише Joi, он может быть таким же хорошим выбором или лучшим выбором, чем JSON Schema.
person
Jason Desrosiers
schedule
17.01.2019