首页 > 解决方案 > 为什么JOI比AJV更受欢迎?

问题描述

我正在决定一个可用于客户端和服务器端验证的验证库。我一直在比较 JOI(+ joi-browser)和 AJV。

据我了解,JOI 和 AJV 可以完成同样的事情。AJV 甚至可以执行 JOI 无法执行的异步验证。AJV 似乎也验证了以标准化格式编写的 JSON 模式,这很方便,但它不像 JOI 那样对开发人员友好。

JOI的明星和贡献者是AJV的两倍多。

为什么JOI的人气是AJV的两倍?

标签: javascriptvalidationjsonschemajoiajv

解决方案


AJV 和 Joi 之间的重要区别在于 AJV 是 JSON Schema 验证器,而 Joi 是 JavaScript 验证器。JSON Schema 是跨平台的,而 Joi 仅适用于 JavaScript。因此,这不是 AJV 和 Joi 之间的选择,而是 JSON Schema 和 Joi 之间的选择。

每种方法都有其权衡取舍,因此您选择哪种方法在很大程度上取决于您的具体情况。

AJV/JSON 模式

JSON Schema 的最大优势在于它是跨平台的。JSON Schema 验证器实现存在于每种主要的编程语言中。无论您选择哪种语言,您都可以在前端和后端使用相同的 JSON Schema,并获得一致的验证结果。一次编写,随处验证。

缺点是因为它是跨平台的,所以它的功能也有所限制。它故意保持足够简单,以便用任何编程语言实现都不会太困难。因为 JSON Schema 不是一种成熟的编程语言,所以它的功能有限。

如果您在后端使用的不是 JavaScript,或者您的应用程序是一个公共 API,可以由任何数量的应用程序以任何数量的语言使用,您可能会选择 AJV/JSON Schema。

乔伊

Joi 最大的优势是它的可用性。它易于使用、易于扩展,并且具有 JavaScript 的全部功能。

不利的一面是,如果您想在前端和后端重用验证逻辑,后端语言的唯一选择就是 node。

如果您将 JavaScript 用于前端和后端,并且不期望需要支持的非 JavaScript 客户端,您可能会选择 Joi。这是一个相当狭窄的情况,但如果是你的情况,你可能会得到比 AJV/JSON Schema 更多的输出或 Joi。

人气

Github 明星并不是一个很好的人气衡量标准。如果您查看 npm 每日下载量,您会看到一个非常不同的故事(AJV:18.9M,Joi:2.2M)。JSON Schema 使用更广泛,因为它是跨平台的。AJV 只是一种语言的一种实现。但是,如果您的开发堆栈适合 Joi 的特定利基,那么它可能是一个不错的选择,或者是比 JSON Schema 更好的选择。


推荐阅读