Vest声明式验证框架
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(); }); });
评论