<img align="right" alt="Ajv logo" width="160" src="http://epoberezkin.github.io/ajv/images/ajv_logo.png">
# Ajv: Another JSON Schema Validator
The fastest JSON Schema validator for node.js and browser. Supports [v5 proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals).
[![Build Status](https://travis-ci.org/epoberezkin/ajv.svg?branch=master)](https://travis-ci.org/epoberezkin/ajv)
[![npm version](https://badge.fury.io/js/ajv.svg)](https://www.npmjs.com/package/ajv)
[![npm downloads](https://img.shields.io/npm/dm/ajv.svg)](https://www.npmjs.com/package/ajv)
[![Code Climate](https://codeclimate.com/github/epoberezkin/ajv/badges/gpa.svg)](https://codeclimate.com/github/epoberezkin/ajv)
[![Coverage Status](https://coveralls.io/repos/epoberezkin/ajv/badge.svg?branch=master&service=github)](https://coveralls.io/github/epoberezkin/ajv?branch=master)
[![Gitter](https://img.shields.io/gitter/room/ajv-validator/ajv.svg)](https://gitter.im/ajv-validator/ajv)
__Please note__: You can start using NEW beta version [5.0.4](https://github.com/epoberezkin/ajv/releases/tag/5.0.4-beta.3) (see [migration guide from 4.x.x](https://github.com/epoberezkin/ajv/releases/tag/5.0.1-beta.0)) with the support of JSON-Schema draft-06 (not officially published yet): `npm install ajv@^5.0.4-beta`.
Also see [docs](https://github.com/epoberezkin/ajv/tree/5.0.4-beta.3) for 5.0.4.
## Contents
- [Performance](#performance)
- [Features](#features)
- [Getting started](#getting-started)
- [Frequently Asked Questions](https://github.com/epoberezkin/ajv/blob/master/FAQ.md)
- [Using in browser](#using-in-browser)
- [Command line interface](#command-line-interface)
- Validation
- [Keywords](#validation-keywords)
- [Formats](#formats)
- [$data reference](#data-reference)
- NEW: [$merge and $patch keywords](#merge-and-patch-keywords)
- [Defining custom keywords](#defining-custom-keywords)
- [Asynchronous schema compilation](#asynchronous-compilation)
- [Asynchronous validation](#asynchronous-validation)
- Modifying data during validation
- [Filtering data](#filtering-data)
- [Assigning defaults](#assigning-defaults)
- [Coercing data types](#coercing-data-types)
- API
- [Methods](#api)
- [Options](#options)
- [Validation errors](#validation-errors)
- [Related packages](#related-packages)
- [Packages using Ajv](#some-packages-using-ajv)
- [Tests, Contributing, History, License](#tests)
## Performance
Ajv generates code using [doT templates](https://github.com/olado/doT) to turn JSON schemas into super-fast validation functions that are efficient for v8 optimization.
Currently Ajv is the fastest and the most standard compliant validator according to these benchmarks:
- [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark) - 50% faster than the second place
- [jsck benchmark](https://github.com/pandastrike/jsck#benchmarks) - 20-190% faster
- [z-schema benchmark](https://rawgit.com/zaggino/z-schema/master/benchmark/results.html)
- [themis benchmark](https://cdn.rawgit.com/playlyfe/themis/master/benchmark/results.html)
Performace of different validators by [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark):
[![performance](https://chart.googleapis.com/chart?chxt=x,y&cht=bhs&chco=76A4FB&chls=2.0&chbh=32,4,1&chs=600x416&chxl=-1:%7Cajv%7Cis-my-json-valid%7Cjsen%7Cschemasaurus%7Cthemis%7Cz-schema%7Cjsck%7Cjsonschema%7Cskeemas%7Ctv4%7Cjayschema&chd=t:100,68,61,22.8,17.6,6.6,2.7,0.9,0.7,0.4,0.1)](https://github.com/ebdrup/json-schema-benchmark/blob/master/README.md#performance)
## Features
- Ajv implements full [JSON Schema draft 4](http://json-schema.org/) standard:
- all validation keywords (see [JSON-Schema validation keywords](https://github.com/epoberezkin/ajv/blob/master/KEYWORDS.md))
- full support of remote refs (remote schemas have to be added with `addSchema` or compiled to be available)
- support of circular references between schemas
- correct string lengths for strings with unicode pairs (can be turned off)
- [formats](#formats) defined by JSON Schema draft 4 standard and custom formats (can be turned off)
- [validates schemas against meta-schema](#api-validateschema)
- supports [browsers](#using-in-browser) and nodejs 0.10-6.x
- [asynchronous loading](#asynchronous-compilation) of referenced schemas during compilation
- "All errors" validation mode with [option allErrors](#options)
- [error messages with parameters](#validation-errors) describing error reasons to allow creating custom error messages
- i18n error messages support with [ajv-i18n](https://github.com/epoberezkin/ajv-i18n) package
- [filtering data](#filtering-data) from additional properties
- [assigning defaults](#assigning-defaults) to missing properties and items
- [coercing data](#coercing-data-types) to the types specified in `type` keywords
- [custom keywords](#defining-custom-keywords)
- keywords `switch`, `constant`, `contains`, `patternGroups`, `patternRequired`, `formatMaximum` / `formatMinimum` and `formatExclusiveMaximum` / `formatExclusiveMinimum` from [JSON-schema v5 proposals](https://github.com/json-schema/json-schema/wiki/v5-Proposals) with [option v5](#options)
- [v5 meta-schema](https://raw.githubusercontent.com/epoberezkin/ajv/master/lib/refs/json-schema-v5.json#) for schemas using v5 keywords
- [v5 $data reference](#data-reference) to use values from the validated data as values for the schema keywords
- [asynchronous validation](#asynchronous-validation) of custom formats and keywords
Currently Ajv is the only validator that passes all the tests from [JSON Schema Test Suite](https://github.com/json-schema/JSON-Schema-Test-Suite) (according to [json-schema-benchmark](https://github.com/ebdrup/json-schema-benchmark), apart from the test that requires that `1.0` is not an integer that is impossible to satisfy in JavaScript).
## Install
```
npm install ajv
```
To install a stable beta version [5.0.4](https://github.com/epoberezkin/ajv/releases/tag/5.0.4-beta.3) (see [migration guide from 4.x.x](https://github.com/epoberezkin/ajv/releases/tag/5.0.1-beta.0)):
```
npm install ajv@^5.0.4-beta
```
## <a name="usage"></a>Getting started
Try it in the node REPL: https://tonicdev.com/npm/ajv
The fastest validation call:
```javascript
var Ajv = require('ajv');
var ajv = new Ajv(); // options can be passed, e.g. {allErrors: true}
var validate = ajv.compile(schema);
var valid = validate(data);
if (!valid) console.log(validate.errors);
```
or with less code
```javascript
// ...
var valid = ajv.validate(schema, data);
if (!valid) console.log(ajv.errors);
// ...
```
or
```javascript
// ...
ajv.addSchema(schema, 'mySchema');
var valid = ajv.validate('mySchema', data);
if (!valid) console.log(ajv.errorsText());
// ...
```
See [API](#api) and [Options](#options) for more details.
Ajv compiles schemas to functions and caches them in all cases (using schema stringified with [json-stable-stringify](https://github.com/substack/json-stable-stringify) as a key), so that the next time the same schema is used (not necessarily the same object instance) it won't be compiled again.
The best performance is achieved when using compiled functions returned by `compile` or `getSchema` methods (there is no additional function call).
__Please note__: every time validation function or `ajv.validate` are called `errors` property is overwritten. You need to copy `errors` array reference to another variable if you want to use it later (e.g., in the callback). See [Validation errors](#validation-errors)
## Using in browser
You can require Ajv directly from the code you browserify - in this case Ajv will be a part of your bundle.
If you need to use Ajv in several bundles you can create a separate UMD bundle using `npm run bundle` script (thanks to [siddo420](https://github.com/siddo420)).
Then you need to load Ajv in the browser:
```html
<script src="ajv.min.js"></script>
```
This bundle can be used with diffe
没有合适的资源?快使用搜索试试~ 我知道了~
sqlite数据库electron应用
共2000个文件
js:6419个
ts:711个
md:554个
2星 需积分: 42 57 下载量 82 浏览量
2017-05-04
19:05:23
上传
评论 2
收藏 23.08MB ZIP 举报
温馨提示
nodejs框架electron应用 基于nodejs的框架,实现electron应用 数据库使用sqlite3 页面布局使用angularjs
资源推荐
资源详情
资源评论
收起资源包目录
sqlite数据库electron应用 (2000个子文件)
sqlite3.c 6.68MB
shell.c 177KB
tclsqlite3.c 130KB
nmakehlp.c 17KB
benchmark-native.c 613B
map-file-comment-inline.css 1KB
angular-csp.css 343B
map-file-comment.css 252B
map-file-comment-double-slash.css 249B
sqlite3.h 479KB
nan.h 66KB
nan.h 66KB
sqlite3ext.h 29KB
nan_callbacks_12_inl.h 17KB
nan_callbacks_12_inl.h 17KB
nan_callbacks_pre_12_inl.h 16KB
nan_callbacks_pre_12_inl.h 16KB
nan_weak.h 15KB
nan_weak.h 15KB
nan_implementation_12_inl.h 14KB
nan_implementation_12_inl.h 14KB
macros.h 9KB
nan_new.h 9KB
nan_new.h 9KB
nan_implementation_pre_12_inl.h 8KB
nan_implementation_pre_12_inl.h 8KB
nan_string_bytes.h 8KB
nan_string_bytes.h 8KB
nan_maybe_pre_43_inl.h 8KB
nan_maybe_pre_43_inl.h 8KB
nan_maybe_43_inl.h 6KB
nan_maybe_43_inl.h 6KB
statement.h 6KB
nan_persistent_pre_12_inl.h 6KB
nan_persistent_pre_12_inl.h 6KB
database.h 5KB
nan_object_wrap.h 4KB
nan_object_wrap.h 4KB
nan_persistent_12_inl.h 4KB
nan_persistent_12_inl.h 4KB
nan_callbacks.h 3KB
nan_callbacks.h 3KB
nan_typedarray_contents.h 3KB
nan_typedarray_contents.h 3KB
async.h 2KB
nan_converters.h 2KB
nan_converters.h 2KB
nan_converters_pre_43_inl.h 1KB
nan_converters_pre_43_inl.h 1KB
nan_converters_43_inl.h 1KB
nan_converters_43_inl.h 1KB
threading.h 1KB
gcc-preinclude.h 205B
index.html 1KB
index.html 542B
test.html 340B
example.html 200B
example.html 200B
resume.html 5B
angular.js 1.19MB
regenerator.min.js 949KB
Rx.js 569KB
lodash.js 527KB
ajv.bundle.js 270KB
source-map.debug.js 251KB
core.js 232KB
index.js 226KB
shim.js 223KB
nodent.min.js 217KB
library.js 216KB
bluebird.js 175KB
angular.min.js 164KB
pubsuffix.js 146KB
pubsuffix.js 146KB
Rx.min.js 136KB
ajv.min.js 117KB
bluebird.core.js 117KB
core.js 112KB
source-map.js 98KB
core.min.js 81KB
bluebird.min.js 78KB
shim.min.js 77KB
library.min.js 75KB
lodash.min.js 71KB
index.js 66KB
index.js 66KB
nacl-fast.js 61KB
nacl-fast.js 61KB
browser.js 59KB
browser.js 59KB
bluebird.core.min.js 54KB
server.js 50KB
server.js 50KB
browser-source-map-support.js 50KB
request.js 44KB
index.js 41KB
index.js 41KB
request.js 40KB
parser.js 38KB
source-map-consumer.js 37KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
- wenhao0152018-11-22很满意,支持
- 早期的虫子2017-10-25404没有资源
- qq_202920472017-11-16运行之后会出现找不到“...node_modules\sqlite3\lib\binding\electron-v1.6-win32-x64\node_sqlite3.node”,根本运行不起来sqlite3
- 那些年,那些事2020-09-12感觉没什么用
Jay_SG
- 粉丝: 3
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功