当前位置:首页 > VUE

登录页面用vue实现

2026-01-20 00:14:06VUE

创建Vue项目

使用Vue CLI初始化项目:

npm install -g @vue/cli
vue create login-page
cd login-page
npm run serve

安装依赖

安装路由和表单验证库(如VeeValidate):

npm install vue-router vee-validate

配置路由

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

登录页面用vue实现

import { createRouter, createWebHistory } from 'vue-router'
import Login from '../views/Login.vue'

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

const router = createRouter({
  history: createWebHistory(),
  routes
})

export default router

设计登录组件

创建src/views/Login.vue,包含表单和基础验证逻辑:

<template>
  <div class="login-container">
    <form @submit.prevent="handleSubmit">
      <input v-model="email" type="email" placeholder="Email" required />
      <input v-model="password" type="password" placeholder="Password" required />
      <button type="submit">Login</button>
    </form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      email: '',
      password: ''
    }
  },
  methods: {
    handleSubmit() {
      // 提交逻辑或API调用
      console.log(this.email, this.password)
    }
  }
}
</script>

<style scoped>
.login-container {
  max-width: 400px;
  margin: 0 auto;
  padding: 20px;
}
</style>

添加表单验证

集成VeeValidate进行高级验证(示例):

登录页面用vue实现

import { useField, useForm } from 'vee-validate'

export default {
  setup() {
    const { handleSubmit } = useForm()
    const { value: email } = useField('email', validateEmail)
    const { value: password } = useField('password', validatePassword)

    function validateEmail(value) {
      if (!value) return 'Required'
      const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
      return regex.test(value) ? true : 'Invalid email'
    }

    const onSubmit = handleSubmit(values => {
      console.log(values)
    })

    return { email, password, onSubmit }
  }
}

集成API调用

使用Axios发送登录请求:

npm install axios

在组件中添加:

import axios from 'axios'

methods: {
  async handleSubmit() {
    try {
      const response = await axios.post('/api/login', {
        email: this.email,
        password: this.password
      })
      localStorage.setItem('token', response.data.token)
      this.$router.push('/dashboard')
    } catch (error) {
      alert('Login failed')
    }
  }
}

响应式布局优化

在CSS中使用媒体查询适配移动端:

@media (max-width: 600px) {
  .login-container {
    padding: 10px;
  }
  input, button {
    width: 100%;
  }
}

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

相关文章

用vue实现搜索查询

用vue实现搜索查询

实现搜索查询的基本思路 在Vue中实现搜索查询功能通常涉及以下几个核心部分:数据绑定、事件监听、过滤逻辑和UI反馈。以下是一个完整的实现方案。 数据绑定与输入框 创建一个Vue组件,包含一个输入框用…

vue设计与实现 书

vue设计与实现 书

vue设计与实现 书 《Vue.js设计与实现》是一本深入探讨Vue.js框架内部原理和设计思想的书籍,适合希望深入理解Vue.js的开发者。以下是关于这本书的详细信息: 书籍内容 《Vue…

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue实现换行

vue实现换行

Vue 中实现换行的几种方法 在 Vue 中实现换行可以通过多种方式,具体取决于使用场景和需求。以下是常见的几种方法: 使用 HTML 的 <br> 标签 在模板中直接使用 <br…

vue滚动实现

vue滚动实现

Vue 滚动实现方法 使用原生滚动 在 Vue 中可以通过 ref 获取 DOM 元素,调用原生滚动方法实现滚动效果。适用于简单场景。 <template> <div ref=…

vue 实现分屏

vue 实现分屏

Vue 实现分屏的方法 使用 CSS Flexbox 或 Grid 布局 通过 CSS Flexbox 或 Grid 布局可以轻松实现分屏效果。在 Vue 组件中定义两个或多个区域,并使用 CSS 控…