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