Validation Yup vs Joi用于前端验证

Validation Yup vs Joi用于前端验证,validation,frontend,joi,yup,Validation,Frontend,Joi,Yup,我想用Yup或Joi实现前端验证 从我找到的所有文档和文章中,我得出了几个结论: Joi更适用于后端验证,而Yup更适用于前端验证 根据,Yup更加精简,并通过客户端验证构建 Yup束大小约为Joi-的2.5倍 然而,与Yup相比,我没有找到Joi在支持方面缺少什么 现在,从所有这些结论来看,它要么选择更小的捆绑包,要么选择更好的性能。在过去,joi确实缺乏浏览器支持,至少是开箱即用的支持。它使用浏览器中没有的几个Node.js API来实现它的一些功能。仍然可以在它上面使用,或者使用非

我想用Yup或Joi实现前端验证

从我找到的所有文档和文章中,我得出了几个结论:

  • Joi更适用于后端验证,而Yup更适用于前端验证
  • 根据,Yup更加精简,并通过客户端验证构建
  • Yup束大小约为Joi-的2.5倍
然而,与Yup相比,我没有找到Joi在支持方面缺少什么


现在,从所有这些结论来看,它要么选择更小的捆绑包,要么选择更好的性能。

在过去,joi确实缺乏浏览器支持,至少是开箱即用的支持。它使用浏览器中没有的几个Node.js API来实现它的一些功能。仍然可以在它上面使用,或者使用非官方的npm包,但是这个过程非常繁琐,以至于在前端使用joi的情况不太常见。是的,这基本上是一个解决办法

然而,这些信息已经过时了,因为joi现在包含了一个官方的浏览器版本,它易于使用,大小与yup大致相同。请参阅其package.json:

假设绑定器设置正确,则应检测浏览器版本并自动使用。例如,如果您使用的是Rollup,请确保使用带有
浏览器:true
选项的
@Rollup/plugin node resolve

我强烈建议现在在前端使用joi,因为您可以在前端和后端之间共享架构,这真是太棒了。

Yup.InferType是我最常用的功能之一。它消除了为同一对象定义两次类型的必要性。Joi中没有这样的选项,这增加了引导代码。