Vest聲明式驗(yàn)證框架
Vest 是一個(gè)用于 JS 應(yīng)用程序的驗(yàn)證庫(kù),其語(yǔ)法來(lái)源于現(xiàn)代 JS 單元測(cè)試框架,如 Mocha 或 Jest。由于它使用了常見(jiàn)的聲明模式,所以很容易學(xué)習(xí)。它在用戶輸入驗(yàn)證和用戶交互時(shí)的驗(yàn)證方面非常有效,可以提供最佳的用戶體驗(yàn)。
Vest 背后的想法是,可以被描述為反映你的表單或功能結(jié)構(gòu)的 spec 或 contract,反映你的形式或功能結(jié)構(gòu)。你的驗(yàn)證在生產(chǎn)中運(yùn)行,而且它們與框架無(wú)關(guān)--這意味著 Vest 能很好地與 React、Angular、Vue 配合使用,甚至根本不需要框架。
使用 Vest 進(jìn)行表單驗(yàn)證可以減少臃腫,提高功能的可讀性和可維護(hù)性。
特性:
- 框架不可知(BYOUI)
- 豐富、可擴(kuò)展的斷言庫(kù) (enforce) ( doc )
- 同一字段的多個(gè)驗(yàn)證
- 警告(非失敗)測(cè)試(文檔)
- 僅驗(yàn)證用戶與之交互的字段 ( doc )
- 記住異步驗(yàn)證以減少對(duì)服務(wù)器的調(diào)用 ( doc )
- 測(cè)試分組 ( 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();
});
});
評(píng)論
圖片
表情
