当前位置:首页 > 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)
    // 后续提交逻辑...
  }
}

响应式布局优化

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

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

前端vue实现登录页面

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

相关文章

vue表格重置怎么实现

vue表格重置怎么实现

重置表格数据的方法 在Vue中重置表格数据通常需要操作绑定的数据源,以下是几种常见实现方式: 直接重置数据源 // 假设表格绑定的是tableData this.tableData = [...t…

vue实现drag

vue实现drag

Vue 实现拖拽功能的方法 在 Vue 中实现拖拽功能可以通过原生 HTML5 的拖拽 API 或第三方库如 vuedraggable 来完成。以下是两种常见方法的实现方式。 使用 HTML5 拖…

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class…

vue 实现工具

vue 实现工具

Vue 实现工具的方法 使用 Vue 实现工具功能可以通过多种方式完成,具体取决于工具的类型和需求。以下是几种常见的方法: 组件化实现 创建一个独立的 Vue 组件来封装工具功能。例如,实现一个计…

vue mvvm实现

vue mvvm实现

Vue MVVM 实现原理 Vue.js 是一个基于 MVVM(Model-View-ViewModel)模式的框架,其核心是通过数据绑定和响应式系统实现视图与数据的自动同步。以下是 Vue 实现 M…

vue实现tap

vue实现tap

Vue 实现 Tap 事件 在移动端开发中,Tap 事件比 Click 事件更常用,因为 Click 事件有 300ms 延迟。以下是几种在 Vue 中实现 Tap 事件的方法。 使用第三方库 安…