Почему 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.