簡單封裝登錄組件,全局注冊,利用element-ui庫
如圖:

定義Login.vue組件
<template>
<div>
<el-form :model="ruleForm" :rules="rules" ref="ruleForm">
<el-form-item prop="username">
<el-input v-model="ruleForm.username" placeholder="請輸入用戶名">
<i slot="prefix" class="el-icon-user"></i>
</el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
v-model="ruleForm.password"
placeholder="請輸入密碼"
show-password
>
<i slot="prefix" class="el-icon-lock"></i>
</el-input>
</el-form-item>
<el-form-item>
<el-button @click="login" type="primary" style="width:100%"
>登錄</el-button
>
</el-form-item>
</el-form>
</div>
</template>
<script>
export default {
name: "Login",
components: {},
props: {
ruleForm: {
type: Object,
required: true,
},
rules: {
type: Object,
required: true,
},
},
methods: {
login() {
this.$refs.ruleForm.validate((valid) => {
if (valid) {
this.$emit('event', 'submit');
}else{
this.$emit('event', 'errHandle')
}
});
},
},
};
</script>
注冊公共組件
在globalComponent中 index.js中
// 注冊全局組件
import Vue from "vue"
import Login from "../components/Login.vue"
Vue.component('Login',Login)
在main.js引入注冊
import Vue from 'vue'
import App from './App.vue'
import store from './store'
import router from './router'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import "./globalComponents"; //引入公共組件index
Vue.config.productionTip = false
Vue.use(ElementUI);
new Vue({
store,
router,
render: h => h(App)
}).$mount('#app')
在view文件中登錄頁面。
<template>
<div>
<h1>登錄組件</h1>
<div>
<Login
:rule-form="ruleForm"
:rules="rules"
@submit="submit"
@errHandle="errHandle"
></Login>
</div>
</div>
</template>
<script>
export default {
name: "LoginPage",
components: {},
props: {},
data() {
return {
ruleForm: {
username: "",
password: "",
},
rules: {
username: [
{
required: true,
message: "用戶名不能為空",
trigger: "blur",
},
{
min: 2,
max: 6,
message: "用戶名在2-6之間",
trigger: "blur",
},
],
password: [
{
required: true,
message: "密碼不能為空",
trigger: "blur",
},
{
min: 2,
max: 6,
message: "密碼在2-6之間",
trigger: "blur",
},
],
},
};
},
methods: {
submit() {
this.$message.success("提交成功");
},
errHandle() {
this.$message.error("表單錯誤");
},
},
};
</script>
至此! 簡單的封裝就ok了!
