Почему JOI более популярен, чем AJV? - PullRequest
0 голосов
/ 17 января 2019

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

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

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

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

1 Ответ

0 голосов
/ 17 января 2019

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

Важное различие между 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.

...