用例
接下来,我们想指出一些 Valibot 特别适合的用例。我们欢迎你提出我们可能没有想到的其他用例 想法。
服务器请求
由于大多数 API 端点都可以通过互联网访问,因此基本上任何人都可以发送请求和传输数据。因此,重要的是要应用零信任安全,并在进一步处理之前彻底检查请求数据。
与 if/else 条件相比,使用模式特别有效,因为即使是复杂的结构也可以轻松映射。此外,该库会根据模式自动为解析后的数据提供类型,这提高了类型安全性,从而使你的代码更安全。
表单验证
模式也可以用于表单验证。由于 Valibot 的捆绑包体积小,并且可以个性化错误信息,该库特别适合此用途。此外,Next.js、Remix 和 Nuxt 等全栈框架允许在浏览器和服务器上使用相同的模式进行验证,从而将你的代码减少到最少。
例如,Modular Forms 提供了基于模式的表单和字段级验证。此外,表单可以使用模式进行类型安全,这也使得在开发过程中能够进行自动补全。结合正确的框架,只需几行代码即可创建一个完全类型安全、渐进增强的表单,并为开发人员和最终用户提供出色的体验。
浏览器状态
通过 cookie、搜索参数或本地存储来存储的浏览器状态,可能会被用户意外或有意地操纵。为了确保应用程序的功能,在处理这些数据之前对其进行验证会有所帮助。Valibot 可以用于此目的,这也提高了类型安全性。
配置文件
库作者也可以利用 Valibot,例如,将配置文件与模式进行匹配,并在发生错误时提供关于原因和如何解决问题的清晰提示。这也适用于环境变量,以便快速检测配置错误。
模式构建器
我们的模式(schema)是纯 JavaScript 对象,具有定义良好且完全类型安全的结构。这使得 Valibot 成为定义数据结构的绝佳选择,这些数据结构可以由第三方代码进一步处理。例如,可以在 Valibot 之上使用自定义元数据操作来构建 ORM,以生成数据库模式。另一个例子是我们的官方 toJsonSchema 函数,它使用 Valibot 的对象 API 输出一个 JSON 模式,可用于文档目的或使用大型语言模型(LLM)生成结构化输出。
数据迁移
Valibot 还可以用于以类型安全的方式将数据从一种形式迁移到另一种形式。像 Valibot 这样的模式库的优点是,可以为单个属性而不是整个数据集定义转换。这可以使数据迁移更具可读性和可维护性。此外,该模式可用于在迁移之前验证数据,从而提高迁移过程的可靠性。