今天的越寫悅快樂之系列文章爲大家帶來Vue項目如何集成VeeValidate。作爲一名愛做夢的碼農來說,不管是前端、後端、抑或是測試、運維,都需要保持一定的好奇心纔可以,那麼大家都知道Vue作爲前端框架的集大成者,擁有着易用、靈活和高效的優點,那麼對於在Vue項目中集成VeeValidate,大家有沒有實踐過呢?今天我爲大家分享一下如何在Vue項目中集成VeeValidate。
VeeValidate是一看基於模板驅動的表單驗證器,想了解相關內容,請參考官方文檔
VeeValidate同時支持Vue 2和Vue 3
開發環境
- Window 10.0.17763
- Node 10.18.0
- Visual Studio Code 1.48.2
- Vue 2.6.12
- Vee Validate 3.4.5
- Vue CLI 4.5.9
接入步驟
創建項目
我們可以通過兩種方式來創建項目:
1)命令行
-
vue create vee-validate-go
(選擇默認配置)
2)Vue UI
在命令行或者終端輸入vue ui
即可打開默認瀏覽器,然後選擇項目存放位置、輸入項目信息、包管理方式等信息,最後點擊創建工程。
安裝VeeValidate依賴
我們在終端下執行以下命令:
yarn add [email protected] element-ui -S
編寫驗證規則文件
既然我們要驗證表單的可用性,那麼首先我們編寫驗證規則文件,相關寫法可參考以下代碼:
import { required, length, email } from "vee-validate/dist/rules";
import { extend } from "vee-validate";
extend("required", {
...required,
message: "This field is required",
});
extend("email", {
...email,
message: "This field must be a valid email",
});
extend("length", {
...length,
message: "This field must have 2 options",
});
代碼說明
- 導入規則,擴展相關驗證
- 驗證不通過渲染錯誤信息
編寫表單頁面
我們在about
頁面中添加如下內容:
<template>
<div class="about">
<ValidationObserver ref="observer" v-slot="{ handleSubmit }">
<el-form ref="form" :model="form" label-width="80px">
<ValidationProvider
rules="required|email"
name="Email"
v-slot="{ errors }"
>
<el-form-item prop="email" :error="errors[0]" label="Email">
<el-input v-model="form.email"></el-input>
</el-form-item>
</ValidationProvider>
<ValidationProvider
rules="required"
name="Password"
v-slot="{ errors }"
>
<el-form-item prop="password" :error="errors[0]" label="Password">
<el-input type="password" v-model="form.password"></el-input>
</el-form-item>
</ValidationProvider>
<ValidationProvider
rules="required|length:2"
name="Drinks"
v-slot="{ errors }"
>
<el-form-item :error="errors[0]" label="Drinks">
<el-checkbox-group v-model="form.choices">
<el-checkbox label="Coffee"></el-checkbox>
<el-checkbox label="Tea"></el-checkbox>
<el-checkbox label="Soda"></el-checkbox>
</el-checkbox-group>
</el-form-item>
</ValidationProvider>
<el-form-item>
<el-button type="primary" @click="handleSubmit(onSubmit('form'))"
>Create</el-button
>
<el-button @click="resetForm">Reset</el-button>
</el-form-item>
</el-form>
</ValidationObserver>
</div>
</template>
<script>
import { ValidationObserver, ValidationProvider } from "vee-validate";
export default {
name: "About",
components: {
ValidationObserver,
ValidationProvider,
},
data: () => ({
form: {
email: "",
password: "",
choices: [],
},
}),
methods: {
onSubmit(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
console.log("valid", valid);
} else {
console.log("error submit");
return false;
}
});
},
resetForm() {
this.form.email = "";
this.form.password = "";
this.form.choices = [];
this.$nextTick(() => {
this.$refs.observer.reset();
});
},
},
};
</script>
項目配置文件
當通過@vue/cli
創建項目後,我們可以看到項目的配置文件如下:
{
"name": "vee-validate-go",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint"
},
"dependencies": {
"core-js": "3.8.1",
"element-ui": "2.14.1",
"vee-validate": "3.4.5",
"vue": "2.6.12",
"vue-router": "3.4.9"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.5.0",
"@vue/cli-plugin-eslint": "~4.5.0",
"@vue/cli-plugin-router": "~4.5.0",
"@vue/cli-plugin-vuex": "~4.5.0",
"@vue/cli-service": "~4.5.0",
"babel-eslint": "^10.1.0",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^6.2.2",
"vue-template-compiler": "^2.6.12"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {}
},
"browserslist": [
"> 1%",
"last 2 versions",
"not dead"
]
}
項目入口文件
我們在項目的入口main.js
文件中可以看到ElementUI和驗證腳本的引入,其內容如下:
import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import ElementUI from "element-ui";
import "element-ui/lib/theme-chalk/index.css";
Vue.use(ElementUI);
import "./vee-validate";
Vue.config.productionTip = false;
new Vue({
router,
render: (h) => h(App),
}).$mount("#app");
項目結構
當我們完成代碼的編寫後,可以看到項目的結構如下圖所示:
查看結果
我們在項目所在的控制檯(或者終端)執行yarn dev
命令,然後通過Router
跳轉到about
頁面即可看到表單,點擊創建按鈕。
參考
個人收穫及總結
本文介紹瞭如何在Vue項目中集成VeeValidate,它不同於Element UI內置的驗證庫async-validator
,該表單驗證器更方便地定製化驗證規則,錯誤提示信息,監聽表單的提交狀態並通過ValidationProvider
來slot錯誤信息,將用戶的輸入加以限制,避免不可預知的風險,我相信這不僅能防止用戶誤操作,也可以有效防範不法分子的攻擊。我會持續提升Vue的開發效率和體驗,讓技術賦能我們的產品和服務,讓我們一起創造美好的未來,構建適合自己的知識體系。若是我的文章對你有所啓發,那將是我莫大的榮幸。