发布于 2019-01-17 06:16:38
AJV和Joi之间的重要区别是,AJV是一个JSON验证器,而Joi是一个JavaScript验证器。JSON是跨平台的,而Joi只在JavaScript中工作。因此,这不是AJV和Joi之间的选择,而是JSON和Joi之间的选择。
每种方法都有它的取舍,所以你选择哪一种很大程度上取决于你的具体情况。
AJV/JSON模式
从JSON获得的最大好处是它是跨平台的。JSON模式验证器实现存在于每种主要编程语言中。无论您选择哪种语言,您都可以在前端和后端使用相同的JSON,并获得一致的验证结果。写一次,在任何地方验证。
缺点是因为它是跨平台的,所以它所能做的也是有限的。它有意识地保持足够简单,这样在任何编程语言中实现起来都不会太困难。因为JSON不是一种成熟的编程语言,所以它所能做的是有限的。
如果后端使用的是JavaScript以外的东西,或者您的应用程序是公共API,那么您可以选择AJV/JSON,它可以被任意多种语言的应用程序使用。
Joi
Joi最大的优势是它的可用性。它易于使用,易于扩展,并且具有JavaScript的全部功能。
缺点是如果您想在前端和后端重用您的验证逻辑,那么您在后端的唯一选择就是节点。
如果您使用JavaScript作为前端和后端,并且不预期需要支持的非JavaScript客户端,您可能会选择Joi。这是一个相当狭窄的情况,但是如果是您的情况,您可能会得到比AJV/JSON更多的输出或Joi。
普及
Github明星并不是一个很受欢迎的指标。如果你看看npm的每日下载,你会看到一个完全不同的故事(AJV: 1890万,Joi: 220万)。JSON模式由于跨平台而被广泛使用。AJV只是一种语言的一种实现。但是,如果您的开发堆栈适合Joi的特定领域,那么它可以是一个比JSON更好的选择或更好的选择。
https://stackoverflow.com/questions/54228539
复制相似问题