当前位置:首页 > VUE

vue 登录页面实现

2026-01-15 22:53:20VUE

实现 Vue 登录页面的步骤

创建 Vue 项目

使用 Vue CLI 创建一个新项目,运行以下命令:

vue create login-page

进入项目目录并安装必要的依赖:

cd login-page
npm install axios vue-router

设计登录表单

src/components/Login.vue 文件中创建登录表单组件:

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

<script>
export default {
  data() {
    return {
      username: "",
      password: "",
    };
  },
  methods: {
    handleLogin() {
      // 登录逻辑
    },
  },
};
</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;
}
.login-button {
  width: 100%;
  padding: 10px;
  background-color: #42b983;
  color: white;
  border: none;
  border-radius: 5px;
  cursor: pointer;
}
</style>

配置路由

src/router/index.js 中配置登录页面的路由:

import Vue from "vue";
import VueRouter from "vue-router";
import Login from "../components/Login.vue";

Vue.use(VueRouter);

const routes = [
  {
    path: "/login",
    name: "Login",
    component: Login,
  },
];

const router = new VueRouter({
  routes,
});

export default router;

实现登录逻辑

Login.vuehandleLogin 方法中添加登录逻辑:

methods: {
  async handleLogin() {
    try {
      const response = await axios.post("/api/login", {
        username: this.username,
        password: this.password,
      });
      localStorage.setItem("token", response.data.token);
      this.$router.push("/dashboard");
    } catch (error) {
      alert("登录失败,请检查用户名和密码");
    }
  },
},

添加表单验证

使用 Vuelidate 或其他验证库增强表单验证:

npm install vuelidate

Login.vue 中引入并使用:

import { required, minLength } from "vuelidate/lib/validators";

export default {
  data() {
    return {
      username: "",
      password: "",
    };
  },
  validations: {
    username: { required },
    password: { required, minLength: minLength(6) },
  },
  methods: {
    handleLogin() {
      this.$v.$touch();
      if (this.$v.$invalid) return;
      // 登录逻辑
    },
  },
};

添加加载状态

在登录按钮上添加加载状态:

<button type="submit" class="login-button" :disabled="loading">
  {{ loading ? "登录中..." : "登录" }}
</button>

data 中添加 loading 状态:

data() {
  return {
    username: "",
    password: "",
    loading: false,
  };
},

更新 handleLogin 方法:

async handleLogin() {
  this.$v.$touch();
  if (this.$v.$invalid) return;
  this.loading = true;
  try {
    // 登录逻辑
  } catch (error) {
    alert("登录失败");
  } finally {
    this.loading = false;
  }
},

关键注意事项

  • 使用 HTTPS 确保登录请求的安全性
  • 密码字段应使用 type="password" 隐藏输入内容
  • 后端 API 应返回适当的错误消息
  • 使用环境变量存储 API 基础 URL
  • 考虑添加记住我功能
  • 实现密码重置和注册链接

vue 登录页面实现

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

相关文章

vue alert实现

vue alert实现

使用 Vue 实现 Alert 组件 在 Vue 中实现 Alert 组件可以通过自定义组件或结合第三方库完成。以下是几种常见方法: 自定义 Alert 组件 创建一个可复用的 Alert 组件,…

vue实现复选

vue实现复选

Vue 实现复选框 在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式: 单个复选框…

vue 实现全屏

vue 实现全屏

Vue 实现全屏功能 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 完成。以下是一个完整的实现方案: 安装依赖(可选) 如果需要跨浏览器兼容性更好,可以安装 sc…

vue实现监听

vue实现监听

监听数据变化 在Vue中,可以通过watch选项或$watch方法监听数据的变化。watch适用于组件选项内声明式监听,$watch适用于动态监听。 // 选项式API export defaul…

vue实现addclass

vue实现addclass

Vue 实现动态添加 class 的方法 在 Vue 中动态添加 class 可以通过多种方式实现,以下是常见的几种方法: 使用对象语法 通过绑定一个对象到 :class,可以动态切换 cla…

vue实现影院

vue实现影院

Vue实现影院功能的基本思路 使用Vue框架开发影院功能需要结合前端组件化开发、状态管理以及后端API交互。以下是关键实现步骤: 影院页面布局设计 影院页面通常分为顶部导航栏、影院列表区域和底部导…