Почему JOI более популярен, чем AJV?

Я выбираю библиотеку проверки, которую я могу использовать как для проверки на стороне клиента, так и на стороне сервера. Я сравнивал JOI (+ joi-browser) и AJV.

Насколько я понимаю, JOI и AJV могут выполнять одно и то же. AJV может даже выполнить асинхронную проверку, где как JOI не может. Кажется, что AJV также проверяет схему JSON, написанную в стандартизированном формате, что удобно, но она не так удобна для разработчиков, как JOI.

У JOI в два раза больше звезд и участников, чем у AJV.

Почему JOI вдвое популярнее AJV?

1 ответ

Этот вопрос, скорее всего, будет закрыт из-за того, что он основан главным образом на мнениях, но у меня есть кое-что сказать по этому поводу, поэтому я все равно на него отвечу.

Важное различие между 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, которые вам необходимо поддерживать. Это довольно узкая ситуация, но если это ваша ситуация, вы, скорее всего, получите больше или Joi, чем схема AJV/JSON.

популярность

Звезды Github не слишком популярны. Если вы посмотрите ежедневные загрузки npm, вы увидите совсем другую историю (AVJ: 18,9 млн, Joi: 2,2 млн). Схема JSON гораздо шире используется, потому что она кроссплатформенная. AVJ - это всего лишь одна реализация на одном языке. Но если ваш стек разработки соответствует определенной нише Joi, он может быть таким же хорошим выбором или лучшим выбором, чем JSON Schema.

Другие вопросы по тегам