tka*_*lis 3 javascript validation jsonschema joi ajv
我正在决定一个可用于客户端和服务器端验证的验证库。我一直在比较JOI(+ joi-browser)和AJV。
据我了解,JOI和AJV可以完成相同的任务。AJV甚至可以执行异步验证,而JOI无法做到。看来AJV也可以验证以标准化格式编写的JSON模式,这很方便,但是它不像JOI那样对开发人员友好。
为什么JOI的受欢迎程度是AJV的两倍?
Jas*_*ers 20
这个问题可能会因为主要基于观点而封闭,但是我对此有话要说,所以我还是要回答这个问题。
AJV和Joi之间的重要区别在于AJV是JSON模式验证器,而Joi是JavaScript验证器。JSON Schema是跨平台的,而Joi仅适用于JavaScript。因此,这不是在AJV和Joi之间进行选择,而是在JSON Schema和Joi之间进行选择。
每种方法都有其取舍,因此您选择哪种方法在很大程度上取决于您的具体情况。
AJV / JSON模式
您从JSON模式获得的最大好处是它是跨平台的。每种主要编程语言中都存在JSON模式验证器实现。无论选择哪种语言,都可以在前端和后端使用相同的JSON模式,并获得一致的验证结果。编写一次,在任何地方验证。
缺点是,由于它是跨平台的,因此在功能上也有所限制。它刻意保持足够简单,因此在任何编程语言中实现起来都不会太困难。由于JSON Schema不是完整的编程语言,因此它的功能受到限制。
如果您在后端使用的不是JavaScript,或者您的应用程序是公共API,并且可以被任何数量的应用程序以各种语言使用,则可以选择AJV / JSON Schema。
i
Joi的最大优势是可用性。它易于使用,易于扩展,并且具有JavaScript的全部功能。
缺点是,如果您想在前端和后端重用验证逻辑,则后端上的唯一语言选择是node。
如果您将JavaScript用于前端和后端,并且不期望需要支持的非JavaScript客户端,则可以选择Joi。这是一个相当狭窄的情况,但是如果是您的情况,那么您可能会比AJV / JSON Schema受益更多。
人气度
Github明星不是人气的重要指标。如果查看npm的每日下载量,您会看到一个截然不同的故事(AVJ:18.9M,Joi:2.2M)。到目前为止,JSON模式已被广泛使用,因为它是跨平台的。AVJ只是一种语言的一种实现。但是,如果您的开发堆栈适合Joi的特定领域,那么它可以是比JSON Schema更好的选择。
| 归档时间: |
|
| 查看次数: |
3228 次 |
| 最近记录: |