当前位置:首页 > VUE

vue实现登录页面

2026-01-19 18:37:50VUE

创建登录页面结构

使用 Vue 单文件组件(.vue)构建登录页面的基础结构,包含表单、输入框和按钮:

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

定义数据与事件处理

<script> 部分初始化表单数据并实现提交逻辑:

vue实现登录页面

<script>
export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    handleSubmit() {
      // 验证输入
      if (!this.form.username || !this.form.password) {
        alert('请输入用户名和密码');
        return;
      }

      // 模拟登录请求
      console.log('提交数据:', this.form);
      // 实际项目中替换为 axios 请求
      // this.$http.post('/api/login', this.form).then(...)
    }
  }
}
</script>

添加基础样式

<style> 中定义页面样式(支持 SCSS 或 CSS):

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

集成路由跳转

若项目使用 Vue Router,登录成功后跳转到主页:

vue实现登录页面

methods: {
  handleSubmit() {
    // 模拟登录成功
    this.$router.push('/dashboard'); 
  }
}

表单验证增强

使用 VeeValidate 或 Element UI 等库实现高级验证:

<template>
  <input 
    v-model="form.username"
    v-validate="'required|min:3'"
    name="username"
  />
  <span v-if="errors.has('username')">{{ errors.first('username') }}</span>
</template>

<script>
import { Validator } from 'vee-validate';
export default {
  // 注册验证规则
  created() {
    Validator.extend('username', {
      validate: value => /^[a-zA-Z0-9_]+$/.test(value),
      message: '用户名只能包含字母、数字和下划线'
    });
  }
}
</script>

响应式布局优化

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

@media (max-width: 600px) {
  .login-container {
    width: 90%;
    margin-top: 20px;
  }
}

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

相关文章

vue实现全局遮罩层

vue实现全局遮罩层

实现全局遮罩层的方法 在Vue中实现全局遮罩层可以通过多种方式完成,以下是几种常见的实现方法: 使用Vue组件创建遮罩层 创建一个遮罩层组件,通过全局注册或动态挂载的方式实现全局调用。以下是一个简单…

vue实现发表

vue实现发表

Vue 实现发表功能 在 Vue 中实现发表功能通常涉及表单处理、数据绑定和网络请求。以下是实现步骤和代码示例: 表单设计与数据绑定 创建一个表单用于输入发表内容,使用 v-model 进行数据双…

vue功能实现

vue功能实现

Vue 功能实现指南 Vue.js 是一个渐进式 JavaScript 框架,广泛用于构建用户界面。以下是 Vue 功能的常见实现方法。 数据绑定 Vue 的核心功能之一是数据绑定,通过 v-mod…

vue怎么实现

vue怎么实现

Vue 实现方法 Vue 是一个流行的前端框架,用于构建用户界面。以下是几种常见的实现方法: 数据绑定 使用 v-model 指令实现双向数据绑定,适用于表单输入元素。 <input v-m…

vue实现颜色

vue实现颜色

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

vue tab实现

vue tab实现

Vue Tab 实现方法 使用动态组件实现 Tab 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现 Ta…