美文网首页
简单易用的javascript类型校验工具

简单易用的javascript类型校验工具

作者: aimleo | 来源:发表于2021-04-13 10:46 被阅读0次

在这里分享一个开源的动态类型校验工具,它使用javascript语言,在处理http请求验证、函数参数验证等方面非常实用。
github地址
npm地址

tegund

tegund是一个非常简单直观的javascript类型检验库。特点概述:

  • 体积小 : 完整的大小只有4.9kb (gzip压缩后),不依赖其他第三方库;
  • 类型丰富 : 提供数十种基本类型;
  • 易扩展 : 允许您在基本类型中分化出新的类型;

示例

基本使用

const { object, string, number, integer, date, array } = require('tegund')

// basic type check
string().check('abc') // true
number().check(true) // false

// addtional condition
string().min(5).check('abc')  // false

// object
object().check({}) // true
object().check([]) // false

// group
const group = object({
  name: string(),
  age: 'integer'  // use alias, equal to integer()
})

group.check({}) // false
group.check({ name: 'leo', age: 18 }) // true

// array
array().check([1, 'abc', true]) true

// typed array
array(string()).check(['abc', 1]) // false
// or use alias
array('string').check(['abc', 1]) // false

// a array containe string or number
array('string', 'number').check(['abc', 1]) // true

下面我们用tegund校验更加复杂的场景。
假设我们要创建一张用户表,使用tegund来校验输入的内容:

const { object, string, integer, date, array } = require('tegund')

const interface = object({
  name: string().min(2).max(10),  // the user name must be a string and at 2-10
  age: integer().positive(),  // age must be a positive integer number
  address: object({  // the address is a object
    province: string(),
    city: 'string',  // use alias, it is same at string()
    county: 'string',
    addressDetail: 'string',
  }),
  email: string().pattern(  // you can add addtional pattern and error message
    /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/,
    'Please enter a correct email address'
  ),
  pwd: string().pattern(
    /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/,
    'Please enter a password with more than 8 digits, including numbers and letters'
  ),
  tag: array('string'),  // tag must be a array<string>
  remark: string().optional(),  // this field is optional
  createTime: date().forbid(),  // can not provide a createTime prop
  updateTime: date().forbid(),
})

// then validate the params
const args = {}
// test it, is pass, get a undefined, if not, will get a ValidateError
const err = interface.test(args)
// if pass, will get a true
const passed = interface.check(args)

// or you can use assert
// if not pass, will throw a error
interface.assert(args)

错误信息:

>>>>> interface.assert()
<<<<< ValidateError: None is not a Object type

>>>>> interface.assert({})
<<<<< ValidateError: field name validate error, expected a String type, got a [object Undefined]

>>>>> interface.assert({name: ''})
<<<<< ValidateError: field name validate error, expected a String, length gte than 2, but got a length: 0

>>>>> interface.assert({name: 'leo'})
<<<<< ValidateError: field age validate error, expected a Integer type, got a [object Undefined]

// and so on...

详细的使用方法,请查看说明文档

安装使用

# 安装 tegund
npm i tegund

License

MIT

Copyright (c) 2021-present aim-leo

相关文章

  • 简单易用的javascript类型校验工具

    在这里分享一个开源的动态类型校验工具,它使用javascript语言,在处理http请求验证、函数参数验证等方面非...

  • SpringBoot校验框架:yue-library

    validator 出色的服务端校验框架validator,功能齐全、简单易用 完善的校验方式,支持单参数连写校验...

  • EasyBridge:一种简单的js-bridge设计方案

    EasyBridge是一个简单易用的js-bridge的工具库,提供了日常开发中,JavaScript与Java之...

  • JavaScript预编译

    JavaScript预编译,你不知道的JavaScript 隐式类型转换 typeof   typeof 用来校验...

  • SqlDbx工具介绍

    SqlDbx 是简单易用的数据库连接工具,是一种电脑软件。 SqlDbx 是简单易用的数据库连接工具,SQL编辑,...

  • Spring Validation

    简单说明 前端发送到后端的数据即使经过了 JavaScript 的校验,但有可能任然有人试使用专门的工具向后端发送...

  • Flow入门初识

    Flow是facebook出品的JavaScript静态类型检查工具。由于JavaScript是动态类型语言,它的...

  • 文件上传漏洞的总结

    防御文件上传的一些思路 客户端javascript校验(通常校验扩展名) 检查文件扩展名 检查MIME类型 随机文...

  • 类型

    JavaScript的数据类型 JavaScript简单数据类型(基本数据类型,值类型) Boolean Stri...

  • 对象、Objects

    javascript的基本结构类型可以分为:简单值类型和对象(引用类型) -->简单值类型包含:number、st...

网友评论

      本文标题:简单易用的javascript类型校验工具

      本文链接:https://www.haomeiwen.com/subject/pymqlltx.html