前端:vue3+ts,后端:koa2+jwt,实现登陆功能(前端部分)

简介: 前端:vue3+ts,后端:koa2+jwt,实现登陆功能(前端部分)

准备工作



搭建项目和一些基础的封装准备

# vue3+ts项目搭建和封装(上篇)

# vue3+ts项目搭建和封装(下篇)


搭建页面



我是用了vue3+element-plus来搭建的项目,所以登陆也是用了element-plus的el-form组件


页面骨架部分


<template>
  <div class="login-wrapper">
      <div class="modal">
          <el-form :model="user" status-icon :rules="rules" ref="userForm">
              <div class="title">火星</div>
              <el-form-item prop="username">
                  <el-input type='text' prefix-icon="el-icon-user" v-model="user.username" />
              </el-form-item>
              <el-form-item prop="password">
                  <el-input type='password' prefix-icon="el-icon-view" v-model="user.password" />
              </el-form-item>
              <el-form-item>
                  <el-button type="primary" class="btn-login" @click="login">登录</el-button>
              </el-form-item>
          </el-form>
      </div>
  </div>
</template>
复制代码


model是绑定的用户输入参数, rules是输入的规则, ref是绑定的dom对象


页面css部分


<style lang="scss">
.login-wrapper{
  display: flex;
  justify-content: center;
  align-items: center;
  background-color: #f9fcff;
  width: 100vw;
  height: 100vh;
  .modal{
    width: 500px;
    padding: 50px;
    background-color: #fff;
    border-radius: 4px;
    box-shadow: 0 0 10px 5px #ddd;
    .title{
      font-size: 50px;
      line-height: 1.5;
      text-align: center;
      margin-bottom: 30px;
    }
    .btn-login{
      width: 100%;
    }
  }
}
</style>
复制代码


css是用的sass写法。


js部分


<script>
export default {
  name: 'login',
  data() {
    return {
        user: {
          username: 'admin',
          password: 'admin'
        },
        rules: {
            /**
             * required: 是否输入
             * message: 提示信息
             * trigger:当失去锚点的时候,触发
             **/
          username: [
            { required: true, message: '请输入用户名', trigger: 'blur' }
          ],
          password: [
            { required: true, message: '请输入密码', trigger: 'blur' }
          ]
        }
    }
  },
  methods: {
      login() {
          this.$refs.userForm.validate(( valid ) => {
              // 当输入完成的时候,确定都输入有值
              if(valid) {
                this.$api.login(this.user).then(r => {
                    console.log(r)
                }).catch(e => {
                    console.log(e)
                })
              } else {
                return false
              }
          })
      }
  },
}
</script>
复制代码


el-form文档说明


网络异常,图片无法展示
|


至此,前端login页面基本完成,然后就是把页面挂载到router上面


挂载路由



import { createRouter, createWebHashHistory } from 'vue-router'
import Home from '@/components/Home.vue'
const routes = [
    { name: 'login', path: '/login', meta: { title: '登录' }, component: () => import('@/views/Login.vue') }
]
const router = createRouter({
    history: createWebHashHistory(),
    routes
})
export default router
复制代码


页面组成部分


网络异常,图片无法展示
|

相关文章
|
12天前
|
JavaScript 前端开发
【Vue.js】监听器功能(EventListener)的实际应用【合集】
而此次问题的核心就在于,Vue实例化的时机过早,在其所依赖的DOM结构尚未完整构建完成时就已启动挂载流程,从而导致无法找到对应的DOM元素,最终致使计算器功能出现异常,输出框错误地显示“{{current}}”,并且按钮的交互功能也完全丧失响应。为了让代码结构更为清晰,便于后续的维护与管理工作,我打算把HTML文件中标签内的JavaScript代码迁移到外部的JS文件里,随后在HTML文件中对其进行引用。
35 8
|
2月前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
2月前
|
JSON 前端开发 搜索推荐
惊!这些前端技术竟然能让你的网站实现个性化推荐功能!
【10月更文挑战第30天】随着互联网技术的发展,个性化推荐已成为提升用户体验的重要手段。前端技术如JavaScript通过捕获用户行为数据、实时更新推荐结果等方式,在实现个性化推荐中扮演关键角色。本文将深入解析这些技术,并通过示例代码展示其实际应用。
102 4
|
3月前
|
前端开发 JavaScript
前端中的“+”连接符,居然有鲜为人知的强大功能!
【10月更文挑战第9天】前端中的“+”连接符,居然有鲜为人知的强大功能!
59 0
前端中的“+”连接符,居然有鲜为人知的强大功能!
|
3月前
|
JavaScript 前端开发 API
|
3月前
|
JavaScript API UED
vue.js怎么实现全屏显示功能
【10月更文挑战第7天】
79 1
|
3月前
|
资源调度 JavaScript UED
如何使用Vue.js实现单页应用的路由功能
【10月更文挑战第1天】如何使用Vue.js实现单页应用的路由功能
|
3月前
|
JavaScript 前端开发
vue3教程,如何手动获取后端数据(入门到精通3,新人必学篇)
本文提供了一个Vue 3教程,讲解了如何使用axios库手动从后端获取数据,包括安装axios、配置后端访问地址、编写路由地址、发起HTTP请求以及在组件中读取和打印响应数据的步骤。
614 0
vue3教程,如何手动获取后端数据(入门到精通3,新人必学篇)
|
4月前
|
前端开发 API
(WEB前端编辑DWG)在线CAD如何实现图形识别功能
mxcad 提供的图形识别功能可帮助用户快速识别和提取 CAD 图纸中的各种图形,如直线、多段线、弧线、圆及图块,显著提升设计效率。此功能不仅适用于图形分类,还能进行数量统计和快速定位,减少手动操作。用户可通过 API 进行二次开发,自定义识别逻辑。具体步骤包括打开在线示例、选择识别功能、设置识别参数并开始识别。更多开发文档请关注公众号:梦想云图网页 CAD。
|
3月前
|
Web App开发 存储 前端开发
前端开发必备:requestAnimationFrame、setInterval、setTimeout——功能解析与优劣对比
前端开发必备:requestAnimationFrame、setInterval、setTimeout——功能解析与优劣对比
214 0