Validator 类概述
Validator 是对 AJV 的封装,提供编译缓存、错误格式化、自定义关键字和批量验证能力。
缓存配置
Validator 构造器支持两种缓存写法:
缓存归属于 Validator 实例。服务端建议在应用启动时创建实例并复用:
在每个请求处理函数里 new Validator(),如果实例没有被长期持有,通常不属于保留型内存泄漏;但它会丢弃上一个 AJV 实例和编译缓存。这个模式会增加对象分配、GC 和 schema 编译工作量,只应放在隔离的一次性验证路径里,并且不要保存这些实例。
缓存只对重复出现的 schema 结构有效。如果每个请求都产生从未见过的动态 schema,缓存条目会持续轮换,每次未命中仍要支付编译成本。应限制动态 schema 形态数量,或把这类校验放到隔离的短生命周期路径中。
如果你希望直接传入 DSL 对象(例如
validate({ email: 'email!' }, data)),请使用顶层便捷函数validate()/validateAsync();Validator实例方法仍建议接收标准 JSON Schema 或s({...})的转换结果。
相关方法:compile()、validate()、validateAsync()、validateBatch()、addKeyword()、addFormat()。
对应示例文件
示例入口: validator.ts
说明: 覆盖 new Validator() 的常见配置、单次验证、编译缓存命中和 validateBatch() 复用路径。