当前位置: 首页 > news >正文

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: '长度在 516 个字符', trigger: 'blur' }],password: [{ required: true, message: '请输入密码', trigger: 'blur' },{ min: 5, max: 16, message: '长度在 516 个字符', 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

相关文章:

  • JVM 数据区域
  • 微服务6大拆分原则
  • Linux 下 Java 部署环境搭建与项目部署详细步骤
  • PyTorch 线性回归模型构建与神经网络基础要点解析
  • 【金仓数据库征文】学校AI数字人:从Sql Server到KingbaseES的数据库转型之路
  • 十六、统一建模语言 UML
  • cdn 是什么?
  • AIGC时代大模型幻觉问题深度治理:技术体系、工程实践与未来演进
  • LSP里氏替换原则
  • 全息美AISEO引领未来智能营销新趋势
  • 关键点检测--使用YOLOv8对Leeds Sports Pose(LSP)关键点检测
  • Kubernetes生产实战(十六):集群安全加固全攻略
  • 协议路由与路由协议
  • 数据库索引详解:原理 · 类型 · 使用 · 优化
  • 流式数据(Streaming Data)和非流式数据(Batch Data)区别、使用场景、优化-来自前端的浅解
  • Python常见面试题
  • AST(抽象语法树)与 HBO(基于历史的优化)详解
  • 单片机-STM32部分:11、ADC
  • 【C++】 —— 笔试刷题day_27
  • 电影感户外哑光人像自拍摄影Lr调色预设,手机滤镜PS+Lightroom预设下载!
  • 韩国执政党总统候选人更换方案被否决,金文洙候选人资格即刻恢复
  • “行人相撞案”现场视频公布,法院:表述不当造成误导
  • 白宫启动“返乡计划” ,鼓励非法移民自愿离开美国
  • 中非民间对话在赞比亚举行
  • 游客称在网红雪山勒多曼因峰需救援被开价2.8万,康定文旅:封闭整改
  • 五月A股怎么买?券商金股电子权重第一,格力电器最热