当前位置:首页 > VUE

vue 登录页面实现

2026-03-08 12:23:08VUE

实现 Vue 登录页面的步骤

创建 Vue 项目

使用 Vue CLI 创建一个新项目,确保已安装 Vue CLI。运行以下命令:

vue create login-page

选择默认配置或手动配置,根据需求添加 Router 和 Vuex。

设计登录表单

src/viewssrc/components 下创建 Login.vue 文件,包含用户名和密码输入框以及提交按钮。

vue 登录页面实现

<template>
  <div class="login-container">
    <form @submit.prevent="handleSubmit">
      <input v-model="username" type="text" placeholder="用户名" required />
      <input v-model="password" type="password" placeholder="密码" required />
      <button type="submit">登录</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    handleSubmit() {
      // 处理登录逻辑
    }
  }
}
</script>

<style scoped>
.login-container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}
form {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
</style>

添加表单验证

使用 Vuelidate 或手动验证表单输入,确保用户名和密码符合要求。

<script>
import { required, minLength } from 'vuelidate/lib/validators'

export default {
  data() {
    return {
      username: '',
      password: ''
    }
  },
  validations: {
    username: { required, minLength: minLength(3) },
    password: { required, minLength: minLength(6) }
  },
  methods: {
    handleSubmit() {
      if (this.$v.$invalid) {
        alert('请填写正确的用户名和密码')
        return
      }
      // 提交逻辑
    }
  }
}
</script>

处理登录逻辑

handleSubmit 方法中调用 API 进行身份验证,使用 Axios 发送 POST 请求。

vue 登录页面实现

<script>
import axios from 'axios'

export default {
  methods: {
    async handleSubmit() {
      try {
        const response = await axios.post('/api/login', {
          username: this.username,
          password: this.password
        })
        localStorage.setItem('token', response.data.token)
        this.$router.push('/dashboard')
      } catch (error) {
        alert('登录失败,请检查用户名和密码')
      }
    }
  }
}
</script>

添加路由保护

src/router/index.js 中配置路由守卫,防止未登录用户访问受保护页面。

import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/views/Login.vue'
import Dashboard from '@/views/Dashboard.vue'

Vue.use(Router)

const router = new Router({
  routes: [
    { path: '/login', component: Login },
    { path: '/dashboard', component: Dashboard, meta: { requiresAuth: true } }
  ]
})

router.beforeEach((to, from, next) => {
  if (to.meta.requiresAuth && !localStorage.getItem('token')) {
    next('/login')
  } else {
    next()
  }
})

export default router

样式优化

使用 CSS 或 UI 库(如 Element UI 或 Vuetify)美化登录页面。

<template>
  <el-form class="login-form" @submit.native.prevent="handleSubmit">
    <el-form-item label="用户名">
      <el-input v-model="username" placeholder="请输入用户名"></el-input>
    </el-form-item>
    <el-form-item label="密码">
      <el-input v-model="password" type="password" placeholder="请输入密码"></el-input>
    </el-form-item>
    <el-button type="primary" native-type="submit">登录</el-button>
  </el-form>
</template>

响应式设计

确保登录页面在不同设备上显示正常,添加媒体查询或使用 Flexbox/Grid 布局。

.login-form {
  width: 300px;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid #ddd;
  border-radius: 4px;
}

@media (max-width: 600px) {
  .login-form {
    width: 90%;
  }
}

通过以上步骤,可以实现一个功能完善且美观的 Vue 登录页面。

标签: 页面vue
分享给朋友:

相关文章

vue实现打字机

vue实现打字机

Vue实现打字机效果 在Vue中实现打字机效果可以通过动态更新文本内容并添加延迟来实现。以下是几种常见的实现方法: 使用setInterval实现 <template> <…

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、当当、天猫等…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件,…

vue实现上移下移插件

vue实现上移下移插件

实现上移下移功能的 Vue 插件 在 Vue 中实现列表项的上移和下移功能,可以通过自定义指令或组件封装的方式完成。以下是两种常见实现方式: 基于数组操作的通用方法 通过操作数组索引实现元素位置交换…

vue实现同步

vue实现同步

Vue 实现同步的方法 在 Vue 中实现同步操作通常涉及数据绑定、状态管理和异步操作的处理。以下是几种常见的方法: 使用计算属性(Computed Properties) 计算属性基于响应式依赖进…

vue轮询实现

vue轮询实现

Vue 轮询实现方法 在 Vue 中实现轮询可以通过以下几种方式: 使用 setInterval data() { return { pollInterval: null } },…