06.登录页面开发

news2024/9/22 4:45:21

1. 前言

前面已经完成了一些基础的配置,接下来开始进入真正的开发阶段。开发过程中会涉及到一些其它插件的集成,这里用到什么就记录一下使用的心得体会。

这里需要交代一下,项目里的文件命名规则,以及文件结构,views下存放所有业务相关的页面,根据不同逻辑,分为不同的文件夹,页面组件的命名方式为首字母大写驼峰式命名,并且必须为 2 个单词以上组成。比如我这里的登录页面,对应的就是 views/login/LoginPage.vue。我见过还有一种方式是通过文件夹区分逻辑,所有的页面都命名为 index.vue,这种方式就是 views/login/index.vue。我觉得这种方式不太好的地方在于,全部叫 index.vue,虽然组件名称短了,但是可读性较差。我更倾向于第一种,单词长点无所谓,清晰最重要。

2. 准备工作

  • 删除所有自动生成的案例代码
    • 删除 src/components 下所有文件
    • 删除 App.vue 所有组件,以及引用
    • 删除 src/assets/base.csssrc/assets/logo.svg,并且删除main.ts对其的引用,

​ 如果你按照我之前的文章一步步走到这里,文件目录结构应该如下图
在这里插入图片描述

3. 构建登录页面

3.1. 创建 views/login/LoginPage.vue 文件

<script setup lang="ts"></script>
<template>
  <div>登录页</div>
</template>
<style scoped lang="scss"></style>

3.2. 配置路由

Vue RouterVue 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。官方脚手架已经帮我们引入了,直接使用就可以了,详情参考官方文档:router.vuejs.org

  • 安装依赖
npm install vue-router@4
  • 创建路由

    • 新建 router/index.ts

    • import { createRouter, createWebHashHistory } from 'vue-router'
      import Login from '@/views/login/LoginPage.vue'
      
      const routes = [{ path: '/', name: 'login', component: Login }]
      
      const router = createRouter({
        history: createWebHashHistory(import.meta.env.BASE_URL),
        routes
      })
      
      export default router
      
  • 注册插件

import './assets/index.scss'
import { createApp } from 'vue'
import App from './App.vue'
import router from './router/index' // [!code ++]

createApp(App)
    .use(router) // [!code ++]
    .mount('#app')
  • App.vue 内容全部删除,修改为下面内容
<script setup lang="ts">
  import { RouterView } from 'vue-router'
</script>
<template>
  <RouterView />
</template>
  <style scoped>
</style>

启动项目,访问可以看到进入了我们的登录页面。

4. 编写登录页面

因为是后台管理系统,所以对于样式要求不高,这个就不花太多时间琢磨了,如果想跟着做的直接复制我的就行。 后续会用到一些图标,这里使用 element-plus 带的 ICON

  • 下载依赖
npm install @element-plus/icons-vue
  • 修改 main.ts
// main.ts

// 如果您正在使用CDN引入,请删除下面一行。
import * as ElementPlusIconsVue from '@element-plus/icons-vue'

const app = createApp(App)
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component)
}

4.1. 创建登录用户对象

// 登录用户对象
export interface LoginDto {
  username: string
  password: string
}

4.2. 页面样式编写

这里就是一些基础性代码,样式编写加一些表单数据绑定,校验等。 这里就不详细介绍了,所有代码可在代码仓库查看。

4.3. 请求获取信息

  • 定义接口
/**
 * 登录
 * @param data LoginParam
 * @returns token
 */
export const login = (data: LoginDto) => {
  return request<string>({
    method: 'POST',
    url: '/login',
    data: { ...data }
  })
}
  • 定义mock数据
// 定义类型
type Req<T> = {
  url: string
  body: T
  query: Record<string, never>
  headers: {
    [key: string]: string
    host: string
    connection: string
    origin: string
    'sec-fetch-site': string
    'sec-fetch-mode': string
    'sec-fetch-dest': string
    referer: string
    'accept-encoding': string
    'accept-language': string
  }
}

// mock接口
{
    url: `${mockUrl}/login`,
    method: 'POST',
    response: (req: Req<LoginDto>) => {
      const { username, password } = req.body
      if (username === 'admin' && password === 'admin123') {
        return {
          code: 20000,
          success: true,
          message: '请求成功。',
          data: '123safsfw35345241223'
        }
      } else {
        return {
          code: 50000,
          success: true,
          message: '用户名或密码错误。',
          data: {}
        }
      }
    }
  },

4. 调试

在这里插入图片描述

5. 总结

发现大量的代码使得文章变得很繁琐,写文章的时候很浪费时间,后面只记录重要流程和一些踩坑点,代码仓库直接开源了,原先想着因为会频繁的改动,等后面稳定了再开源的,所以开源的代码仅供参考,大家如果感兴趣可以看一下 https://gitee.com/cao-shen-yang/zz-admin-vue.git

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

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

相关文章

数学建模之入门篇

目录 什么是数学建模 建模、编程、写作 一、初步建模选择模型 二、进阶熟练掌握 1. 数学模型 线性规划 图与网络模型及方法 插值与拟合 灰色预测 动态规划 层次分析法 AHP 整数规划 目标规划模型 偏最小二乘回归 微分方程模型 博弈论 / 对策论 排队论模型 存…

Java笔试面试题AI答之面向对象(5)

文章目录 25. Java 包装类的实例是否可变&#xff1f;不可变类&#xff08;Immutable Classes&#xff09;特殊情况总结 26. 简述Java什么是自动装箱和自动拆箱&#xff1f;自动装箱&#xff08;Autoboxing&#xff09;自动拆箱&#xff08;Unboxing&#xff09;注意事项 27. J…

[译] APT分析报告:12.APT29利用spy软件供应商创建的IOS、Chrome漏洞

这是作者新开的一个专栏&#xff0c;主要翻译国外知名安全厂商的技术报告和安全技术&#xff0c;了解它们的前沿技术&#xff0c;学习它们威胁溯源和恶意代码分析的方法&#xff0c;希望对您有所帮助。当然&#xff0c;由于作者英语有限&#xff0c;会借助LLM进行校验和润色&am…

秒杀抢券很难吗?oneCoupon带你成为面试中的王牌

秒杀抢券很难吗&#xff1f;oneCoupon带你成为面试中的王牌 如果你在为简历上找不到亮眼的项目发愁&#xff0c;oneCoupon牛券可能就是你的救星。这个系统不仅高性能&#xff0c;还能承受十万次查询和分发请求。本文将带你走进oneCoupon牛券的世界&#xff0c;看看它是如何助力…

【C++】容器vector常用接口详解

目录 一.vector基本介绍 二.vector的构造&#xff08;constructor&#xff09; 三.vector迭代器&#xff08;iterator&#xff09; 四.vector的三种遍历 1.for循环 2.范围for 3.迭代器&#xff08;正向、反向&#xff09; 五. vector扩容操作 1.reserve 2.resize 六.…

自动化邮件发送:结合SMTP协议使用Python发送包含报表或数据附件的邮件

目录 引言 SMTP协议简介 Python中的smtplib模块 基本使用 发送带附件的邮件 自动化邮件发送系统设计 需求分析 系统架构 实现步骤 1. 准备数据源 2. 创建邮件模板 3. 编写邮件发送引擎 4. 设置调度器 5. 异常处理 示例应用&#xff1a;自动化发送报表邮件 总结…

6种有效的时间序列数据特征工程技术(使用Python)

在商业分析中&#xff0c;"时间"是一个核心概念。我们基于时间组件来分析销售数据、收入、利润、增长&#xff0c;甚至进行预测。然而&#xff0c;对于初学者来说&#xff0c;这可能是一个复杂的主题。在处理时间敏感的数据集时&#xff0c;需要考虑时间序列数据的多…

Vue3其他Api

1.shallowRef与shallowReactive <template><div class"app"><h2>求和为:{{ sum }}</h2><h2>名字为:{{ person.name }}</h2><h2>年龄为:{{ person.age }}</h2><button click"sum 1">sum1</butto…

【Docker系列】Docker 日志管理:批量删除策略与实践

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

剪画:自媒体人都是这么保存无字幕视频素材的!

在数字媒体的精彩世界中&#xff0c;视频如璀璨星辰照亮我们的生活。 无论是教育的启迪、娱乐的放松还是信息的传播&#xff0c;视频都担当着关键角色。 但水印&#xff0c;那以文字或图形形式出现在视频中的印记&#xff0c;虽有声明版权之效&#xff0c;却也常给我们带来困扰…

基于web网上十字绣专营店设计与实现

&#xff08;一&#xff09;业务流程分析 没有实现网上销售的十字绣专营店&#xff0c;即店面销售方式&#xff0c;店面需要专人看管&#xff0c;而且销售范围有限&#xff0c;面向的对象很受限制&#xff0c;销售情况需要店主手工记录到账簿&#xff0c;以备利润汇总&#xf…

脚手架工具的应用(前端和后端搭建)

前端 一、安装 Node.js 环境 使用npm下载镜像 查看镜像&#xff1a;npm config get registry 切换淘宝镜像&#xff1a;npm config set registry https://registry.npmmirror.com 还原镜像&#xff1a;npm config set registry https://registry.npmjs.org 二、使用 Vue.js 脚…

BugKu练习记录:ok

题目&#xff1a; 从特征上看是BrainFuck中的Ook加密&#xff0c;直接用工具解

三天速成数学建模国赛国奖全攻略

这里写目录标题 国赛考点&#x1f5d2;️&#x1f5d2;️01 国赛是如何评奖的&#xff1f;02 国赛历年题型和模型算法1&#xff09;国赛赛题特点2&#xff09;历年国赛赛题类型 建模手三天快速提升计划✨✨01 第一天&#xff1a;模型分类及国赛常见模型的用法了解1&#xff09;…

弹窗相关操作

弹窗使用 文章目录 弹窗使用弹窗-新增表单修改弹窗 弹窗-新增表单 拖拽弹出层组件&#xff0c;补充表单信息 2.点击表单&#xff0c;绑定数据库模型&#xff0c;绑定字段 3.新增弹窗按钮绑定打开或关闭弹出层事件 4.弹窗保存按钮依次绑定 保存表单&#xff0c;打开或关闭弹…

技术风暴中的应急策略:开发团队如何应对突发故障与危机

文章目录 每日一句正能量前言快速响应与问题定位策略建立健全的应急预案和备份机制事后总结与持续改进后记 每日一句正能量 在工作上遇到挫折&#xff0c;于是退缩了&#xff0c;说因为难&#xff1b;在生活上遇到困难难&#xff0c;于是抱怨了&#xff0c;说因为苦&#xff1b…

Docker安装Neo4j图数据库和APOC插件

文章目录 一、前言二、安装Neo4j三、测试Neo4j四、安装APOC插件五、测试APOC插件 一、前言 官方文档&#xff1a;https://neo4j.com/docs/operations-manual/current/docker/introduction/ 二、安装Neo4j 我这里以 5.23.0 版的 Neo4j 为例 拉取镜像 docker pull neo4j:5.23.0…

暴搜、深搜、回溯算法题集

文章目录 1. 全排列2. 全排列II3. 子集4. 子集II5. 找出所有子集的异或总和再求和6. 电话号码的字母组合7. 括号生成8. 组合9. 目标和10. 组合总和11. 组合总和II12. 组合总和III13. 字母大小写全排列14. 优美的排列15. N 皇后16. 有效的数独17. 解数独18. 单词搜索19. 黄金矿工…

Docker 的安全优化

目录 1 Docker安全优化思路 1.1 命名空间隔离的安全 1.2 控制组资源控制的安全 1.3 内核能力机制 1.4 Docker服务端防护 1 Docker安全优化思路 Docker容器的安全性&#xff0c;很大程度上依赖于Linux系统自身 评估Docker的安全性时&#xff0c;主要考虑以下几个方面&#xf…

两步解决yum无法安装软件问题:Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

报错信息&#xff1a; [rootiZwz946ibli8ikuyqgtc58Z ~]# yum install rh-redis5-redis Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org?archx86_64&release7&reposclo-rh …