当前位置:首页 > VUE

vue 登录页面实现

2026-03-28 23:17:22VUE

实现 Vue 登录页面的步骤

创建 Vue 项目

使用 Vue CLI 创建一个新项目:

vue create login-page

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

安装依赖

如果需要使用 UI 组件库,可以安装 Element UI 或 Vuetify:

npm install element-ui

创建登录组件

src/viewssrc/components 下创建 Login.vue 文件:

<template>
  <div class="login-container">
    <el-form :model="loginForm" :rules="rules" ref="loginForm" class="login-form">
      <el-form-item prop="username">
        <el-input v-model="loginForm.username" placeholder="用户名"></el-input>
      </el-form-item>
      <el-form-item prop="password">
        <el-input v-model="loginForm.password" type="password" placeholder="密码"></el-input>
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="submitForm">登录</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      loginForm: {
        username: '',
        password: ''
      },
      rules: {
        username: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
        password: [{ required: true, message: '请输入密码', trigger: 'blur' }]
      }
    }
  },
  methods: {
    submitForm() {
      this.$refs.loginForm.validate(valid => {
        if (valid) {
          // 调用登录 API
          this.$store.dispatch('user/login', this.loginForm)
            .then(() => {
              this.$router.push('/dashboard')
            })
        }
      })
    }
  }
}
</script>

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

配置路由

src/router/index.js 中添加登录路由:

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

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/login',
      name: 'Login',
      component: Login
    }
  ]
})

创建 Vuex 存储

src/store/modules/user.js 中创建用户模块:

const state = {
  token: ''
}

const mutations = {
  SET_TOKEN: (state, token) => {
    state.token = token
  }
}

const actions = {
  login({ commit }, userInfo) {
    return new Promise((resolve, reject) => {
      // 模拟 API 调用
      setTimeout(() => {
        commit('SET_TOKEN', 'mock-token')
        resolve()
      }, 1000)
    })
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}

添加全局样式

src/assets/css 下创建全局样式文件,并在 main.js 中引入:

/* reset.css */
body {
  margin: 0;
  padding: 0;
}

实现表单验证

使用 Element UI 的表单验证功能,确保用户输入符合要求:

rules: {
  username: [
    { required: true, message: '请输入用户名', trigger: 'blur' },
    { min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
  ],
  password: [
    { required: true, message: '请输入密码', trigger: 'blur' },
    { min: 6, max: 16, message: '长度在 6 到 16 个字符', trigger: 'blur' }
  ]
}

添加登录状态管理

在路由守卫中检查登录状态:

router.beforeEach((to, from, next) => {
  const hasToken = store.getters['user/token']
  if (to.path === '/login') {
    if (hasToken) {
      next('/')
    } else {
      next()
    }
  } else {
    if (!hasToken) {
      next('/login')
    } else {
      next()
    }
  }
})

实现记住密码功能

Login.vue 中添加记住密码选项:

<el-form-item>
  <el-checkbox v-model="rememberMe">记住密码</el-checkbox>
</el-form-item>

添加第三方登录

集成 Google 或 GitHub 登录:

methods: {
  handleGoogleLogin() {
    window.location.href = 'https://accounts.google.com/o/oauth2/auth?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&scope=email profile'
  }
}

响应式设计

使用媒体查询确保在不同设备上正常显示:

vue 登录页面实现

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

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

相关文章

vue实现菜单调用

vue实现菜单调用

Vue 实现动态菜单的常见方法 基于路由配置生成菜单 Vue Router 的路由配置可以天然转化为菜单结构,适合权限与路由绑定的系统: // router/index.js const route…

vue实现mvc

vue实现mvc

Vue 实现 MVC 模式 Vue 本身是一个 MVVM(Model-View-ViewModel)框架,但可以通过结构调整实现 MVC(Model-View-Controller)模式。以下是具体实…

vue实现sso

vue实现sso

Vue 实现 SSO(单点登录)方案 单点登录(SSO)允许用户通过一次登录访问多个相关系统。以下是基于 Vue 的实现方案: 使用 OAuth2/OpenID Connect 协议 OAuth2…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理异…

甘特图vue实现

甘特图vue实现

甘特图 Vue 实现方法 使用开源库 vue-ganttastic 安装依赖: npm install vue-ganttastic 基础实现代码: <template> <…