Vest声明式验证框架

联合创作 · 2023-09-20 01:41

Vest 是一个用于 JS 应用程序的验证库,其语法来源于现代 JS 单元测试框架,如 Mocha 或 Jest。由于它使用了常见的声明模式,所以很容易学习。它在用户输入验证和用户交互时的验证方面非常有效,可以提供最佳的用户体验。

Vest 背后的想法是,可以被描述为反映你的表单或功能结构的 spec 或 contract,反映你的形式或功能结构。你的验证在生产中运行,而且它们与框架无关--这意味着 Vest 能很好地与 React、Angular、Vue 配合使用,甚至根本不需要框架。

使用 Vest 进行表单验证可以减少臃肿,提高功能的可读性和可维护性。

特性:

  • 框架不可知(BYOUI)
  • 丰富、可扩展的断言库 (enforce) ( doc )
  • 同一字段的多个验证
  • 警告(非失败)测试(文档
  • 仅验证用户与之交互的字段 ( doc )
  • 记住异步验证以减少对服务器的调用 ( doc )
  • 测试分组 ( doc )
import vest, { test } from 'vest';

export default vest.create('user_form', (data = {}, currentField) => {
  vest.only(currentField);

  test('username', 'Username is required', () => {
    enforce(data.username).isNotEmpty();
  });

  test('username', 'Username is too short', () => {
    enforce(data.username).longerThanOrEquals(3);
  });

  test('password', 'Password is required', () => {
    enforce(data.password).isNotEmpty();
  });

  test('password', 'Password must be at least 6 chars long', () => {
    enforce(data.password).longerThanOrEquals(6);
  });

  test('password', 'Password is weak, Maybe add a number?', () => {
    vest.warn();
    enforce(data.password).matches(/[0-9]/);
  });

  if (data.password) {
    test('confirm_password', 'Passwords do not match', () => {
      enforce(data.confirm_password).equals(data.password);
    });
  }

  test('email', 'Email Address is not valid', () => {
    enforce(data.email).isEmail();
  });

  test('tos', () => {
    enforce(data.tos).isTruthy();
  });
});
浏览 15
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报