• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

    psv: js 数据 格式 验证

    原作者: [db:作者] 来自: 网络 收藏 邀请

    开源软件名称:

    psv

    开源软件地址:

    https://gitee.com/GTchao555/psv

    开源软件介绍:

    Porco Schema Validate (psv)

    (自2.1.7版本之后,数组的定义改变,支持数组嵌套)

    psv 是一款轻量级 js 数据格式验证工具,相比于其他功能齐备的验证工具,psv 的优势在于体积非常小(之所以要写它,就是因为对其他 validate 框架不满意,我只是想要一个格式化验证工具,却给我一个 1M 的项目),最开始的核心代码只有 130 行。

    下载、安装

    npm install psv --save
    yarn add psv

    使用

    首先你需要定义出自己的 schema,比如:

    var schema = {    str: {        type: String,             // string 类型        required: true,           // 是否必填,默认为 false        max: 3,                   // 最大长度        min: 2,                   // 最小长度        enum: ['12', '13', '14'], // 枚举        regex: '^[8-9]*$',        // 正则        // 正则(兼容老版本,不推荐使用,优先级低,当它与 regex 同时出现时会被忽略)        pattern: '^[5-9]*$',        error: {                  // 自定义错误提示            type: '类型错误',            required: '必填错误',            max: '不能超过最大长度',            min: '不能低于最小长度',            enum: 'enum 必须正确',            regex: '正则验证错误',            pattern: '正则验证错误',        }          },    num: {        type: Number,        required: true,        max: 3,           // 最大长度        min: 1,           // 最小长度        enum: [1, 2, 3],  // 枚举        error: {          // 自定义错误提示            type: '类型错误',            required: '必填错误',            max: '不能超过最大值',            min: '不能低于最小值',            enum: 'enum 必须正确',        },    },    boo: {        type: Boolean,         required: true,        error: {          // 自定义错误提示            type: '类型错误',            required: '必填错误',        },    },    arr: {    	type: Array,         required: true,        max: 3,          // 最大长度        min: 2,          // 最大长度        error: {          // 自定义错误提示            type: '类型错误',            required: '必填错误',            max: '不能超过最大长度',            min: '不能低于最小长度',        },    },    obj: {    	type: Object,         required: true,        error: {          // 自定义错误提示            type: '类型错误',            required: '必填错误',        },    }};

    schema 是预先定义的数据格式,接下来将会拿 data 与 schema 进行比对,对于一个 schema 来说只有 type 字段是必填的,其他都可以缺省。

    var data = {    str: '12',    num: 2,    boo: true,    array: [1, 2],    obj: {},}

    接着我们导入并创建 Psv 对象进行验证

    import Psv from 'psv';function testPsv(schema, data) {	const psv = new Psv(schema, data);	const validate = psv.validate();	if (!validate) {		psv.printErrors();	}}

    api

    • 数据类型

      • String
        • type
        • default // 默认值
        • trim // 去除数据两边空格,默认 false
        • required
        • max
        • min
        • enum
        • regex
        • pattern
        • error (自定义错误提示,可使用默认值)
          • type (type 错误提示信息)
          • required (required 错误提示信息)
          • max (max 错误提示信息)
          • min (min 错误提示信息)
          • enum (enum 错误提示信息)
          • regex (regex 错误提示信息)
          • pattern (pattern 错误提示信息)
      • Number
        • type
        • default
        • required
        • max
        • min
        • enum
        • error
          • type
          • required
          • max
          • min
          • enum
      • Array
        • type
        • default
        • required
        • max
        • min
        • error
          • type
          • required
          • max
          • min
      • Boolean
        • type
        • default
        • required
        • error
          • type
          • required
      • Object
        • type
        • default
        • required
        • error
          • type
          • required
    • 函数

      • validate // 验证入口
      • printErrors // 打印错误信息
      • getErrors // 获取错误信息

    注意:当 type = Object 时,说明该字段可以是任何 js 基本类型或对象,甚至可以是 一个 函数(慎用)。

    4.1.0 之后,全面支持 default 默认值,default 可以是任何值,String 添加 trim 去空格支持。default 以及 trim 都支持无限嵌套

    const schema = {    key1: {        type: String,        default: '123',    }};const data = {};const psv = new Psv(schema, data);const res = psv.validate();// data.key1 === '123'
    const schema = {    key1: {        type: String,        trim: true,    }};const data = {	key1: '  123'};const psv = new Psv(schema, data);const res = psv.validate();// data.key1 === '123'

    同样,psv 支持嵌套定义

    const schema2 = {    str2: {        type: String,        required: true    }}const schema = {    str1: {        type: schema2,        required: true    },};

    (如果对使用有疑问,可以参考 test 目录下代码)


    鲜花

    握手

    雷人

    路过

    鸡蛋
    该文章已有0人参与评论

    请发表评论

    全部评论

    专题导读
    热门推荐
    阅读排行榜

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap