正式页面开发-登录注册页面

整体路由设计:

  • 登录和注册的切换是切换组件或者是切换内容(v-if和 v-else),因为点击两个之间路径是没有变化的。也就是登录和注册共用同一个路由。登录是独立的一级路由。
  • 登录之后进到首页,有三个大模块:文章分类,文章管理,个人中心。首页架子也是一级路由,点到三个模块一级个人中心中的其他模块也是一样都是二级路由

在 views文件夹中 新建四个文件夹,分别存放登录页,首页架子,文章,用户四个部分路由,根据各个文件夹有多少文件再新建 vue 文件

在router 中配置路由规则

在 APP.vue中写上路由出口

登陆注册页面:页面之间切换用 v-if 和 v-else

删除之前 app.vue中的代码,只留下简单地架构即可

登陆注册页面需要用到一些图标,所以首先安装图标库

笔记中 cv 静态结构代码

el-row搭配 el-col来实现板块划分,一行分为 24份数,el-col中通过 :span="份数"来实现板块占据的份数,offset =""来实现与左侧的margin。

右侧的登录页面通过 el-form 表单来总实现,el-form-item表示表单中每个小部分,注册字样,输入用户名,输入密码 ,再次输入密码,注册字样,返回字样。

el-form-item中有输入框 el-input,图标 :prefix-icon=""

el-form-item中有返回键 el-link,点击事件则将 isRegister布尔值改为 false

<script setup>
import { User, Lock } from '@element-plus/icons-vue'
import { ref } from 'vue'
const isRegister = ref(true)
</script><template><!-- el-row配合 el-col组合,el-row表示一行,一行分成24份el-col标识列 (1):span="12" 代表在一行中,占12份(50%)(2) :span="6" 代表在一行中,占6份(25%)(3) :offset="3" 代表在一行中,左侧margin份数--><el-row class="login-page"><el-col :span="12" class="bg"></el-col><el-col :span="6" :offset="3" class="form"><!-- 因为其中都是表单,所以直接 el-form(整个表单组件)el-form-item 表单的一行 (一个表单域中)el-input 表单元素(输入开给你)--><!-- 注册相关表单 --><el-form ref="form" size="large" autocomplete="off" v-if="isRegister"><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:prefix-icon="Lock"type="password"placeholder="请输入密码"></el-input></el-form-item><el-form-item><el-input:prefix-icon="Lock"type="password"placeholder="请输入再次密码"></el-input></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 = 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-inputname="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>

登陆注册页面功能 

表单校验

:model = "ruleForm",ruleForm绑定的是 form 对象(下面定义的 reluForm是ts写法),它是用来收集当前表单中全部表单数据

在线演示:黑马程序员-大事件

接口文档: 登录 - 黑马程序员-大事件

接口根路径: http://big-event-vue-api-t.itheima.net

了解了四大块之后,接下来就是首先创建一个ruleForm对象,从接口文档中创建相应字段。将其绑定到注册代码段的 el-form 中

接下来是创建整个表单的校验规则:

新建校验规则 rules,里边写上 用于提交的form对象的三个数据的校验规则,例如username

然后将 form对象相应的属性绑定到相应的输入框中

并且在输入框对应的 el-form-item中配置prop

(如果希望是实时校验,将 trigger值改为 change)

除了username的非空校验和长度校验之外,还有password的非空校验和正则校验

自定义校验,原则是因为以上三个校验都无法满足。

再次输入密码不光是要满足非空和正则校验,还要校验是否和原本输入的一致

正式进行注册提交之前,还要进行预校验,也就是没有输入东西的时候是不能进行注册的。

点击注册按钮的时候还要对表单内容进行校验,通过之后才能进行注册提交请求。

调用 element-plus 中的 form 的方法 validate,要使用这个方法那么就先要拿到 form 组件实例

先定义一个 form ,然后 与需要获取的那个做绑定。因为注册和登录都需要验证,所以两个都绑定,也不必担心两个重名,因为 v-if 和 v-else 则证明了这两个每次只会出现一次

预校验之后进行注册请求:

在api 文件夹中新建 user.js文件

在使用 ElMessage时,虽然以往类似能直接使用 el-row之类的标签,是因为原来配置的自动导入。现在因为 eslint中没有关于此的配置,所以直接使用 ElMessage 是错误的,所以要在 eslintrc.cjs中进行配置

登录功能(校验+登录+存token)

共用 formModel ,因为登录中也需要 username和password,然后将其在 登录部分的 el-form中 :model="formModel" 绑定。规则也共用,: rules = "rules"绑定规则

v-model 绑定 form 数据对象子属性

prop绑定校验规则

登录 和 注册 两个切换的时候,输入框中的内容能带入到另外一个里面去,所以在切换的时候要将表单信息进行重置

点击登录的时候也要进行预校验

要完成登录还要封装对应的 api 接口

调用方式与 注册接口调用方式一样

需要将请求回来的结果接收,并调用 stores文件夹中用户模块 user.js中的setToken方法将请求结果存入本地。因为stores 文件夹中的各模块已经导入到 其下的index.js中,所以只需要在index.js中进行按需导入即可。导进来之后要要 创建一个实例(所说的实例也就是通过构造函数创建的对象),也就是对象,然后才能访问其中的 setToken 方法

登录成功之后是要进行跳转到首页的,这里按需导入 vue-router库中的 useRouter钩子函数,然后创建一个实例(也就是钩子函数创建出来的对象)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/71060.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

fopen的打开方式

fopen的打开方式 FILE *fopen(const char *filename, const char *mode); filename表示文件名字, mode表示打开的文件方式

Docker 常用指令手册(学习使用)

CentOS Docker 实用指令手册 1. 安装与配置 # CentOS 安装Docker sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install docker-ce docker-ce-cli containerd.io sudo systemctl st…

PostgreSQL中的外键与主键

在 PostgreSQL 中&#xff0c;外键&#xff08;Foreign Key&#xff09; 是一种用于建立表间关联的数据库约束机制&#xff0c;其核心作用与主键&#xff08;Primary Key&#xff09;有显著区别。以下是详细解析&#xff1a; 一、外键的定义与作用 定义 外键是表中的一个或多个…

NFC拉起微信小程序申请URL scheme 汇总

NFC拉起微信小程序&#xff0c;需要在微信小程序开发里边申请 URL scheme &#xff0c;审核通过后才可以使用NFC标签碰一碰拉起微信小程序 有不少人被难住了&#xff0c;从微信小程序开发社区汇总了以下信息&#xff0c;供大家参考 第一&#xff0c;NFC标签打开小程序 https://…

如何使用clip模型进行OOD

使用CLIP模型进行OOD检测&#xff08;Out-of-Distribution Detection) 的核心思路是&#xff1a;利用CLIP的多模态对齐能力&#xff08;图像和文本的联合嵌入空间&#xff09;&#xff0c;通过计算输入样本与已知类别语义的匹配度&#xff0c;判断其是否属于已知分布。 CLIP的…

Word 插入图片会到文字底下解决方案

一、现象描述 正常情况下&#xff0c;我们插入图片都是这样的。 但有时突然会这样&#xff0c;插入的图片陷于文字底部。 二、网上解决方案 网上有教程说&#xff0c;修改图片布局选项&#xff0c;从嵌入型改成上下型环绕。改完之后确实有用&#xff0c;但是需要手动拖动图片…

1. HTTP 数据请求

相关资源&#xff1a; 图片素材&#x1f4ce;图片素材.zip 接口文档 1. HTTP 数据请求 什么是HTTP数据请求&#xff1a; (鸿蒙)应用软件可以通过(鸿蒙)系统内置的 http 模块 和 Axios&#xff0c;通过 HTTP 协议和服务器进行通讯 学习核心Http请求技术: Http模块 - 属于鸿…

【我的 PWN 学习手札】House of Husk

House of Husk House of Husk是利用格式化输出函数如printf、vprintf在打印输出时&#xff0c;会解析格式化字符如%x、%lld从而调用不同的格式化打印方法&#xff08;函数&#xff09;。同时C语言还提供了注册自定义格式化字符的方法。注册自定义格式化字符串输出方法&#xf…

CTF-web: 查看python代码抽象语法树

抽象语法树&#xff08;Abstract Syntax Tree&#xff0c;简称 AST&#xff09;是源代码的树状表示&#xff0c;展示了代码的语法结构。在 Python 中&#xff0c;ast 模块可以帮助你解析和操作 Python 代码的 AST。 1. 使用 ast 模块解析 Python 代码 我们可以使用 ast.parse …

【多模态】Magma多模态AI Agent

1. 前言 微软杨建伟团队&#xff0c;最近在AI Agent方面动作连连&#xff0c;前两天开源了OmniParser V2&#xff0c;2月26日又开源了Magma&#xff0c;OmniParser专注在对GUI的识别解析&#xff0c;而Magma则是基于多模态技术&#xff0c;能够同时应对GUI和物理世界的交互&…

Linux系统Pycharm界面卡死无法显示其他界面

1、使用如下代码查看Pycharm的进程 ps aux | grep pycharm2、使用kill关闭所有pycharm进程 kill -9 <替换为你进程的PID>不确定可以执行如下代码&#xff0c;直接全部关闭&#xff1a; pkill -9 -f pycharm3、如果界面还是存在并且仍然卡死 如果 pycharm 界面仍然显…

QT异步编程之线程池QThreadPool

一、概述 在一个应用程序中&#xff0c;我们需要多次使用线程&#xff0c;也就意味着&#xff0c;我们需要多次创建并销毁线程。而创建线程并销毁线程的过程势必会消耗内存。QThreadPool是Qt框架中用于管理线程池的类。它提供了一种高效的方式来管理和重用线程&#xff0c;从而…

Python爬虫:WebAssembly案例分析与爬取实战

文章目录 一、WebAssembly简介1.1 什么是WebAssembly?1.2 WebAssembly的优势1.3 WebAssembly 的使用场景1.4 WebAssembly 对爬虫的挑战二、WebAssembly案例分析2.1 案例一:在线游戏2.2 案例二:图像处理应用三、Python爬虫实战:处理WebAssembly模块3.1 案例一3.2 案例二四、…

vue3配置端口,比底部vue调试

import { fileURLToPath, URL } from ‘node:url’ import { defineConfig } from ‘vite’ import vue from ‘vitejs/plugin-vue’ import vueJsx from ‘vitejs/plugin-vue-jsx’ // 关闭vue底部调试模式 // import vueDevTools from ‘vite-plugin-vue-devtools’ // htt…

算法仿真平台搭建1-FFMPEG+RtspSever快速搭建一个RTSP服务器

一、前言 本文相关的全部源码和RtspSever库&#xff0c;我已打包上传&#xff0c;欢迎大家免费下载&#xff0c;testRTSPSever。 每一个嵌入式视觉算法工程师&#xff0c;都应该有一套属于自己的算法仿真和测试环境。可以方便地进行视频、图像等素材进行在线导入&#xff0c;可…

大模型WebUI:Gradio全解12——LangChain原理、架构和组件(2)

大模型WebUI:Gradio全解12——LangChain原理、架构和组件(2) 前言12. LangChain原理及agents构建Gradio UI12.2 学习资料12.2.1 学习文档12.2.2 用途示例12.2.3 OpenAI和DeepSeek例程1. OpenAI示例2. DeepSeek例程参考文献前言 本系列文章主要介绍WEB界面工具Gradio。Gradi…

盛京开源社区加入 GitCode,书写东北开源生态新篇章

在数字化转型与开源技术蓬勃发展的浪潮下&#xff0c;开源社区已成为推动技术创新的核心力量。盛京开源社区&#xff08;SJOSC&#xff09;作为沈阳地区的开源交流平台&#xff0c;始终致力于连接开发者、企业及高校&#xff0c;构建区域技术生态圈。 现在&#xff0c;盛京开源…

安装Git(小白也会装)

一、官网下载&#xff1a;Git 1.依次点击&#xff08;红框&#xff09; 不要安装在C盘了&#xff0c;要炸了&#xff01;&#xff01;&#xff01; 后面都 使用默认就好了&#xff0c;不用改&#xff0c;直接Next&#xff01; 直到这里&#xff0c;选第一个 这两种选项的区别如…

Vue.js计算属性

计算属性​ 基础示例​ 模板中的表达式虽然方便,但也只能用来做简单的操作。如果在模板中写太多逻辑,会让模板变得臃肿,难以维护。比如说,我们有这样一个包含嵌套数组的对象: js const author = reactive({name: John Doe,books: [Vue 2 - Advanced Guide,Vue 3 - Bas…

代码审计入门学习

简介 HadSky轻论坛程序为个人原创PHP系统&#xff0c;作者为蒲乐天&#xff0c;后端基于puyuetianPHP框架驱动&#xff0c;前端基于 puyuetianUI框架驱动&#xff0c;默认编辑器为puyuetianEditor富文本编辑器&#xff0c;其他非原创框架及驱动JQuery.js 及Font-Awesome字体库…