当前位置:首页 > VUE

登录页面用vue实现

2026-02-20 16:15:07VUE

使用Vue实现登录页面

Vue.js是一个流行的前端框架,适合构建单页应用(SPA)。以下是一个简单的登录页面实现方法。

创建Vue项目

确保已安装Node.js和Vue CLI。通过命令行初始化一个新项目:

vue create login-page
cd login-page

安装必要依赖

如果需要表单验证,可以安装VeeValidate:

登录页面用vue实现

npm install vee-validate

编写登录组件

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

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

<script>
export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    handleSubmit() {
      // 这里添加登录逻辑
      console.log('登录数据:', this.form)
      // 通常这里会调用API进行验证
    }
  }
}
</script>

<style scoped>
.login-container {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
  border: 1px solid #ddd;
  border-radius: 5px;
}
.form-group {
  margin-bottom: 15px;
}
label {
  display: block;
  margin-bottom: 5px;
}
input {
  width: 100%;
  padding: 8px;
  box-sizing: border-box;
}
button {
  width: 100%;
  padding: 10px;
  background-color: #42b983;
  color: white;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
</style>

添加路由

src/router/index.js中配置路由:

登录页面用vue实现

import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/Login'

Vue.use(Router)

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

添加表单验证

使用VeeValidate进行更复杂的验证:

<template>
  <div>
    <ValidationObserver v-slot="{ handleSubmit }">
      <form @submit.prevent="handleSubmit(onSubmit)">
        <ValidationProvider name="用户名" rules="required" v-slot="{ errors }">
          <input v-model="username" type="text">
          <span>{{ errors[0] }}</span>
        </ValidationProvider>

        <ValidationProvider name="密码" rules="required|min:6" v-slot="{ errors }">
          <input v-model="password" type="password">
          <span>{{ errors[0] }}</span>
        </ValidationProvider>

        <button type="submit">登录</button>
      </form>
    </ValidationObserver>
  </div>
</template>

<script>
import { ValidationObserver, ValidationProvider } from 'vee-validate'

export default {
  components: {
    ValidationObserver,
    ValidationProvider
  },
  data() {
    return {
      username: '',
      password: ''
    }
  },
  methods: {
    onSubmit() {
      // 提交逻辑
    }
  }
}
</script>

添加API调用

methods中添加实际的登录请求:

methods: {
  async handleSubmit() {
    try {
      const response = await axios.post('/api/login', {
        username: this.form.username,
        password: this.form.password
      })
      // 处理成功响应
      localStorage.setItem('token', response.data.token)
      this.$router.push('/dashboard')
    } catch (error) {
      // 处理错误
      console.error('登录失败:', error)
    }
  }
}

添加状态管理

对于更复杂的应用,可以使用Vuex管理登录状态:

// store/modules/auth.js
const state = {
  token: localStorage.getItem('token') || '',
  status: ''
}

const mutations = {
  AUTH_REQUEST(state) {
    state.status = 'loading'
  },
  AUTH_SUCCESS(state, token) {
    state.status = 'success'
    state.token = token
  },
  AUTH_ERROR(state) {
    state.status = 'error'
  }
}

const actions = {
  login({ commit }, userData) {
    return new Promise((resolve, reject) => {
      commit('AUTH_REQUEST')
      axios.post('/api/login', userData)
        .then(resp => {
          const token = resp.data.token
          localStorage.setItem('token', token)
          commit('AUTH_SUCCESS', token)
          resolve(resp)
        })
        .catch(err => {
          commit('AUTH_ERROR')
          localStorage.removeItem('token')
          reject(err)
        })
    })
  }
}

export default {
  state,
  mutations,
  actions
}

这个实现包含了基本的登录页面功能,可以根据需要进一步扩展和完善。

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

相关文章

vue播放倍速怎么实现

vue播放倍速怎么实现

实现Vue播放倍速的方法 在Vue中实现播放倍速功能通常涉及HTML5的<video>元素或第三方播放器库。以下是几种常见实现方式: 使用原生HTML5 video元素 通过ref获取v…

vue实现switch

vue实现switch

Vue 实现 Switch 开关组件 在 Vue 中实现 Switch 开关组件可以通过自定义组件或使用现有 UI 库完成。以下是几种常见实现方式: 自定义 Switch 组件 创建一个基础 Sw…

vue实现标题

vue实现标题

Vue 实现标题的方法 在Vue中实现标题可以通过多种方式,以下是几种常见的方法: 方法一:使用模板语法 在Vue组件的模板中直接使用HTML的<h1>到<h6>标签来定义…

vue实现多选

vue实现多选

Vue 实现多选功能 在 Vue 中实现多选功能可以通过多种方式完成,以下是常见的几种方法: 使用 v-model 绑定数组 通过 v-model 绑定到一个数组,可以实现多选功能。适用于复选框组(…

vue 实现ztree

vue 实现ztree

在Vue中实现类似ZTree的功能,可以通过集成第三方库或自定义组件完成。以下是两种常见方法: 使用vue-tree组件 vue-tree是一个轻量级的Vue树形组件,支持复选框、懒加载等功能,适合…

vue实现滚屏

vue实现滚屏

实现滚屏的基本方法 在Vue中实现滚屏效果可以通过多种方式完成,常见的有原生JavaScript滚动方法、第三方库或CSS动画。以下是几种常见实现方式: 使用window.scrollTo或Elem…