Skip to content

Latest commit

 

History

History
104 lines (92 loc) · 3.47 KB

README-ZH.md

File metadata and controls

104 lines (92 loc) · 3.47 KB

racoon-js

一款轻量级的JSON数据格式校验、清洗工具库。

npm version build status code coverage install size npm downloads

Table Of Contents

特性

  • 🌈 同时支持浏览器和Node端。
  • ❄️ 可以灵活定义数据格式,并且支持任意层级的对象、数组格式定义。
  • 🔗 支持链式调用,且无需关注调用顺序。

浏览器支持

Chrome Firefox Safari Opera Edge IE
Latest ✔ Latest ✔ Latest ✔ Latest ✔ Latest ✔ 11 ✔

安装

使用npm

$ npm install racoon-js

使用yarn:

yarn add racoon-js

使用CDN:

<script src="//cdn.jsdelivr.net/npm/racoon-js@latest/dist/racoon.min.js"></script>

示例

import racoon from 'racoon-js';

// Define data format schema
const schema = racoon.object({
  name: racoon
    .string()
    .min(3)
    .error('name is too short') // You can add your custom error message
    .max(30)
    .error('name is too long')
    .required(), // Name can not be `undefined` or `null`
  age: racoon
    .number()
    .int()
    .default(1) // If value is `null` or `undefined`, then return default value `false`
  married: racoon.boolean(),
  favorite: racoon.object({ // You can define deep nested object format schema
    sports: racoon.array(
      racoon.string().min(1).max(100).required()
    ),
    book: racoon.object({
      title: racoon.string().required(),
      date: racoon
        .string()
        .pattern(/^\d{4}-\d{1,2}-\d{1,2}$/)
        .format((date) => { // Format the return value
          return `${date} 12:00:00`;
        })
    })
  })
});

try {
  const result = schema.validate({
    name: 'Jack',
    age: 22,
    favorite: {
      sports: ['football', 'basketball'],
      book: {
        title: 12,
        date: '2010-1-1'
      }
    }
  });
} catch (error) {
  console.error(error);
  // Error: "favorite.book.title": value should be a type of string
  // ↑↑↑ The error message can be customed
}

// If you don't like `try-catch` code style
// you can use `validateSilent` method
// If validate fail
// then `error` is not emtpy
// otherwise,`error` is `undefined`
// For Example:
const { error, value } = schema.validateSilent({ ... });