当前位置:首页 > VUE

前端vue实现登录页面

2026-01-23 16:47:25VUE

创建Vue项目

使用Vue CLI快速初始化项目:

npm install -g @vue/cli
vue create login-demo
cd login-demo

安装必要依赖

若需使用路由和状态管理,安装Vue Router和Vuex:

npm install vue-router vuex axios

设计登录页面结构

src/views下创建Login.vue,包含表单基础结构:

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

实现数据绑定与验证

<script>部分添加响应式数据和提交逻辑:

<script>
export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    async handleSubmit() {
      try {
        const response = await axios.post('/api/login', this.form)
        localStorage.setItem('token', response.data.token)
        this.$router.push('/dashboard')
      } catch (error) {
        alert('登录失败: ' + error.response.data.message)
      }
    }
  }
}
</script>

添加样式

<style>中编写基础样式:

<style scoped>
.login-container {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
  box-shadow: 0 0 10px rgba(0,0,0,0.1);
}
.form-group {
  margin-bottom: 15px;
}
input {
  width: 100%;
  padding: 8px;
}
button {
  width: 100%;
  padding: 10px;
  background-color: #42b983;
  color: white;
  border: none;
}
</style>

配置路由

src/router/index.js中设置登录页路由:

import Login from '../views/Login.vue'

const routes = [
  {
    path: '/login',
    name: 'Login',
    component: Login
  }
]

集成状态管理(可选)

在Vuex中存储登录状态:

// src/store/index.js
export default new Vuex.Store({
  state: {
    isAuthenticated: false
  },
  mutations: {
    setAuth(state, status) {
      state.isAuthenticated = status
    }
  }
})

表单验证增强

使用VeeValidate或自定义验证规则:

methods: {
  validateForm() {
    if (!this.form.username.trim()) return '用户名不能为空'
    if (this.form.password.length < 6) return '密码至少6位'
    return null
  },
  async handleSubmit() {
    const error = this.validateForm()
    if (error) return alert(error)
    // 后续提交逻辑...
  }
}

响应式布局优化

通过媒体查询适配移动端:

前端vue实现登录页面

@media (max-width: 600px) {
  .login-container {
    padding: 15px;
    margin: 20px;
  }
}

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

相关文章

vue实现颜色

vue实现颜色

Vue 实现颜色的方法 在 Vue 中实现颜色管理可以通过多种方式,以下是一些常见的方法: 使用 CSS 变量动态绑定颜色 在 Vue 组件的样式中定义 CSS 变量,并通过 Vue 的数据绑定动态…

实现vue datepicker

实现vue datepicker

安装依赖 使用 vue-datepicker 或第三方库如 v-calendar 或 vue2-datepicker。以 vue2-datepicker 为例: npm install vue2…

vue实现layout

vue实现layout

Vue 实现 Layout 布局的方法 在 Vue 中实现 Layout 布局通常涉及路由嵌套、组件化设计和动态渲染。以下是几种常见的实现方式: 使用嵌套路由 通过 Vue Router 的嵌套路由…

vue实现slidedown

vue实现slidedown

Vue 实现 SlideDown 动画效果 在 Vue 中实现 SlideDown 效果可以通过 CSS 过渡或动画结合 Vue 的过渡系统完成。以下是几种常见方法: 使用 Vue Transiti…

vue实现投票

vue实现投票

Vue实现投票功能 数据准备 在Vue组件的data中定义投票相关数据,包括选项列表和当前选中状态: data() { return { options: [ { id: 1…

vue实现颜色闪烁

vue实现颜色闪烁

实现颜色闪烁的方法 在Vue中实现颜色闪烁效果可以通过CSS动画或JavaScript定时器动态修改样式。以下是两种常见的实现方式: 使用CSS动画实现 通过定义@keyframes动画规则…