当前位置:首页 > 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中设置登录路由:

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进行高级验证(示例):

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设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、…

vue聊天实现

vue聊天实现

Vue 聊天应用实现步骤 创建 Vue 项目 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖(如 Vue 3、Element UI 或 Vuetify 用于 UI 组件)。 npm c…

vue实现div

vue实现div

Vue 实现 DIV 元素的方法 在 Vue 中实现 DIV 元素可以通过多种方式,以下是几种常见的实现方法: 使用模板语法 在 Vue 的模板中直接使用 HTML 的 <div> 标…

vue el 实现

vue el 实现

Vue 中使用 Element UI (el) 的实现方法 Element UI 是一个基于 Vue 的组件库,提供丰富的 UI 组件,常用于快速构建企业级中后台产品。以下介绍 Vue 项目中集成和使…

vue实现分发

vue实现分发

Vue 实现分发的方法 在 Vue 中,分发(Distribution)通常指的是将内容从父组件传递到子组件,或者通过插槽(Slots)机制让父组件控制子组件的部分渲染内容。以下是几种常见的实现分发的…

vue实现tree

vue实现tree

Vue 实现 Tree 组件 使用 Vue 实现 Tree 组件可以通过递归组件的方式来实现层级结构展示。以下是一个完整的实现方法: 基础递归组件实现 创建 Tree 组件文件 Tree.vue,使…