如何將 VeeValidate 整合進大型專案架構 ?
栏目: JavaScript · 发布时间: 6年前
内容简介:VeeValidate 除了內建很多 Validation Rule,還可以自訂Vue 2.5.17VeeValidate 2.1.2
VeeValidate 除了內建很多 Validation Rule,還可以自訂 語系
,自訂 訊息
,自訂 驗證規則
,但要如何這些整合進大型專案架構呢 ?
Version
Vue 2.5.17
VeeValidate 2.1.2
Directory
- 在
src
下建立validators
目錄,專門存放 VeeValidate 所使用的自訂 validator - 在
validators
目錄下建立dictionaries
目錄,專門放置各種自訂訊息檔
- 在
validators
目錄下建立rules
目錄,專門放置各種自訂驗證規則檔
Component
demo.vue
<template> <div> <div> <input v-validate="'required|email'" name="email" type="text"> </div> <div> <span>{{ errors.first('email') }}</span> </div> <div> <input v-validate="'required|custom-email'" name="custom-email" type="text"> </div> <div> <span>{{ errors.first('custom-email') }}</span> </div> </div> </template> <script> import demoValidator from '../validators/demo.validator'; demoValidator(); export default { name: 'demo', }; </script>
19 行
import demoValidator from '../validators/demo.validator'; demoValidator();
原本要在 demo
component 所跑的 VeeValidate,完全整合到 demoValidator()
。
demo.validator.js
import Vue from 'vue'; import VeeValidate, { Validator } from 'vee-validate'; import zh_TW from 'vee-validate/dist/locale/zh_TW'; import { requiredDictionary } from './dictionaries/required.dictionary'; import { emailDictionary } from './dictionaries/email.dictionary'; import { customEmailRule } from './rules/custom-email.rule'; export default () => { Vue.use(VeeValidate); Validator.localize('zh_TW', zh_TW); /** Dictionary */ const dictionary = { zh_TW: { requiredDictionary, emailDictionary, }, }; Validator.localize(dictionary); /** Custom Rule */ Validator.extend('custom-email', customEmailRule); };
第 4 行
import { requiredDictionary } from './dictionaries/required.dictionary'; import { emailDictionary } from './dictionaries/email.dictionary';
將 dictionaries
目錄下所需要的 自訂訊息檔
import 進來。
第 6 行
import { customEmailRule } from './rules/custom-email.rule';
將 rules
目錄下所需要的 自訂驗證規則檔
import 進來。
第 9 行
Vue.use(VeeValidate); Validator.localize('zh_TW', zh_TW);
使用 VeeValidate,並且設定 語系
。
12 行
/** Dictionary */ const dictionary = { zh_TW: { requiredDictionary, emailDictionary, }, }; Validator.localize(dictionary);
架構出 component 所需要的 自訂訊息檔
。
22 行
/** Custom Rule */ Validator.extend('custom-email', customEmailRule);
架構出 component 所需要的 自訂驗證規則檔
。
Dictionary
email.dictionary.js
export const emailDictionary = 'Email 格式錯誤';
定義 email
rule 的自訂訊息。
Rule
required.dictionary.js
export const requiredDictionary = field => `請輸入 ${field}`;
定義 required
rule 的自訂訊息。
custom-email.rule.js
const getMessage = field => `${field} 格式不正確`; const validate = value => { const regex = /^\w+\.*\w+@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z]+$/; return regex.test(value); }; export const customEmailRule = { getMessage, validate, };
設定 customEmail
的自訂驗證規則。
Conclusion
- 由於將
dictionary
與rule
獨立出來,component 的 validator 可以自由組合所需要的dictionary
與rule
,非常靈活 - 當然可以將 VeeValidate 所有的
自訂訊息檔
與自訂驗證規則檔
統一寫在一起,但這樣子Webpack 的 Tree Shaking 無法發揮,比較好的方式是每個 component 有自己的 validator,再由 validator 架構出所需要的自訂訊息檔
與自訂驗證規則檔
Sample Code
完整的範例可以在我的 GitHub 上找到
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- SpringBoot整合MybatisPlus的简单教程(简单整合)
- springmvc教程--整合mybatis开发(spring+springMVC+mybatis整合开发)
- springboot整合springsecurity从Hello World到源码解析(五):springsecurity+jwt整合restful服务
- SSM整合搭建(二)
- SSM整合
- Storm 整合 Hbase
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Unity游戏设计与实现
[日]加藤政树 / 罗水东 / 人民邮电出版社 / 2015-2 / 79.00元
本书出自日本知名游戏公司万代南梦宫的资深开发人员之手,面向初级游戏开发人员,通过10个不同类型的游戏实例,展示了真正的游戏设计和实现过程。本书的重点并不在于讲解Unity的各种功能细节,而在于核心玩法的设计和实现思路。每个实例都从一个idea 开始,不断丰富,自然而然地推出各种概念,引导读者思考必要的数据结构和编程方法。掌握了这些思路,即便换成另外一种引擎,也可以轻松地开发出同类型的游戏。 ......一起来看看 《Unity游戏设计与实现》 这本书的介绍吧!