vue开发用户注册功能
文章目录
- 一、开发步骤
- 二、效果图
- 三、搭建页面
- 创建views/Login.vue
- 在App.vue中导入Login.vue
- 四、数据绑定
- 五、表单校验
- 六、访问后端 API 接口,完成注册
- 七、完整的Login.vue代码
- 八、参考资料
一、开发步骤
二、效果图
三、搭建页面
创建views/Login.vue
完整内容在后面
在App.vue中导入Login.vue
<script setup>import LoginVue from '@/views/Login.vue'</script><template><LoginVue/>
</template><style scoped></style>
四、数据绑定
vue注册用户使用v-model实现数据双向绑定
五、表单校验
vue使用rules实现表单校验——校验用户名和密码
六、访问后端 API 接口,完成注册
vue访问后端接口,实现用户注册
七、完整的Login.vue代码
<script setup>
import { User, Lock } from '@element-plus/icons-vue'
import { ref } from 'vue'
//控制注册与登录表单的显示, 默认显示注册
const isRegister = ref(false)
//定义数据模型
const registerData = ref({username: '',password: '',confirmPassword: ''
})//校验密码的函数
const validateConfirmPassword = (rule, value, callback) => {if (value === '') {callback(new Error('请再次输入密码'))} else if (value !== registerData.value.password) {callback(new Error('两次密码不一致'))} else {callback()}
}//定义表单校验规则
const rules = {username: [{ required: true, message: '请输入用户名', trigger: 'blur' },{ min: 5, max: 16, message: '长度在 5 到 16 个字符', trigger: 'blur' }],password: [{ required: true, message: '请输入密码', trigger: 'blur' },{ min: 5, max: 16, message: '长度在 5 到 16 个字符', trigger: 'blur'}],confirmPassword: [{validator: validateConfirmPassword, trigger: 'blur'}]
}//调用后台接口完成注册
import { userRegisterService } from '@/api/user.js'
const register = async () => {let result = await userRegisterService(registerData.value)if (result.code === 0) {//注册成功alert(result.msg ? result.msg : '注册成功')} else {//注册失败alert('注册失败')}alert(result.msg ? result.msg : '注册成功')
}
</script><template><el-row class="login-page"><el-col :span="12" class="bg"></el-col><el-col :span="6" :offset="3" class="form"><!-- 注册表单 --><el-form ref="form" size="large" autocomplete="off" v-if="isRegister" :model="registerData" :rules="rules"><el-form-item><h1>注册</h1></el-form-item><el-form-item prop="username"><el-input :prefix-icon="User" placeholder="请输入用户名" v-model="registerData.username"></el-input></el-form-item><el-form-item prop="password"><el-input :prefix-icon="Lock" type="password" placeholder="请输入密码" v-model="registerData.password"></el-input></el-form-item><el-form-item prop="confirmPassword"><el-input :prefix-icon="Lock" type="password" placeholder="请输入再次密码" v-model="registerData.confirmPassword"></el-input></el-form-item><!-- 注册按钮 --><el-form-item><el-button class="button" type="primary" auto-insert-space @click="register">注册</el-button></el-form-item><el-form-item class="flex"><el-link type="info" :underline="false" @click="isRegister = false">← 返回</el-link></el-form-item></el-form><!-- 登录表单 --><el-form ref="form" size="large" autocomplete="off" v-else><el-form-item><h1>登录</h1></el-form-item><el-form-item><el-input :prefix-icon="User" placeholder="请输入用户名"></el-input></el-form-item><el-form-item><el-input name="password" :prefix-icon="Lock" type="password" placeholder="请输入密码"></el-input></el-form-item><el-form-item class="flex"><div class="flex"><el-checkbox>记住我</el-checkbox><el-link type="primary" :underline="false">忘记密码?</el-link></div></el-form-item><!-- 登录按钮 --><el-form-item><el-button class="button" type="primary" auto-insert-space>登录</el-button></el-form-item><el-form-item class="flex"><el-link type="info" :underline="false" @click="isRegister = true">注册 →</el-link></el-form-item></el-form></el-col></el-row>
</template><style lang="scss" scoped>
/* 样式 */
.login-page {height: 100vh;background-color: #fff;.bg {background: url('@/assets/logo2.png') no-repeat 60% center / 240px auto,url('@/assets/login_bg.jpg') no-repeat center / cover;border-radius: 0 20px 20px 0;}.form {display: flex;flex-direction: column;justify-content: center;user-select: none;.title {margin: 0 auto;}.button {width: 100%;}.flex {width: 100%;display: flex;justify-content: space-between;}}
}
</style>
八、参考资料
https://www.bilibili.com/video/BV14z4y1N7pg?spm_id_from=333.788.player.switch&vd_source=0467ab39cc5ec5940fee22a0e7797575&p=74