Ajv:高效的JSON模式校验器
一直想写一个优秀开源npm包的分享与学习系列,长久写,持续写。但深知坚持不容易,且万事开头难。
今天刚好有些闲暇,在看一些webpack loader源码的时候,发现一个不错的包——Ajv,有了一种想学习和分享之的冲动。于是这个系列就有了开头。
官网
https://ajv.js.org/,官网上有如下描述:
The fastest JSON-Schema validator for Node.js and browser. Supports draft-04/06/07.
JSON-Schema是什么呢?在学习ajv之前我也不知道,甚至没听过。但这丝毫不影响我们使用ajv,因为理解它很简单。
使用
先来看看ajv在node上怎么使用吧。
1 | const Ajv = require('ajv') |
怎么样,😎关于JSON-Schema的定义是不是有点眼熟?如果你正在使用Vue或者React,会发现它很像props中对属性类型的定义。又或者你正在使用ORM(如Sequelize),它很像定义Model时对字段的描述。
实际上,JSON-Schema正是一种基于JSON格式定义JSON数据结构的规范。ajv正是基于JSON-Schema定义来对JSON格式进行校验的工具。JSON-Schema的使用应该是极其广泛的,在任何需要以JSON格式输入输出的地方,如webpack loader的选项配置,对接口返回格式的约束,接口文档的输出(如swagger),你的开发工具的自定义配置,甚至生成随机数据(还记得mockjs吗)等,都是它发挥强大作用的地方。
周边插件
- ajv-async 可以启用异步校验模式
- ajv-cli 可以让你在命令行上使用ajv
- ajv-errors 可以实现详细的自定义错误信息
- ajv-i18n 可以国际化错误信息
- ajv-keywords 扩展JSON-Schema的关键字,很强大
要学会使用ajv,最好的方式是掌握JSON-Schema,这是后来补上的关于JSON-Schema的详细介绍——传送门。
- 本文链接:https://vhtml.github.io/2019/01/16/NPM__ajv/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!