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

vue 登录页面实现

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 中引入并使用:

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实现无线滚动列表

无限滚动列表的实现方法 在Vue中实现无限滚动列表通常结合监听滚动事件和动态加载数据。以下是几种常见方法: 使用自定义指令 创建自定义指令v-infinite-scroll监听滚动事件:…

vue聊天实现

vue聊天实现

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

vue实现节流

vue实现节流

vue实现节流的方法 在Vue中实现节流(throttle)功能,通常用于限制高频事件的触发频率,例如滚动、输入或按钮点击。以下是几种常见的实现方式: 使用Lodash的throttle函数 安装L…

vue实现vnc

vue实现vnc

Vue 实现 VNC 客户端 在 Vue 项目中实现 VNC 客户端功能,可以通过集成现有的 VNC 客户端库或组件完成。以下是具体实现方法: 安装依赖库 使用 noVNC 或其他 VNC 客户端…

vue实现导航

vue实现导航

使用 Vue Router 实现导航 Vue Router 是 Vue.js 官方提供的路由管理器,用于构建单页应用(SPA)的导航系统。以下是实现导航的基本步骤。 安装 Vue Router n…

vue实现 页面

vue实现 页面

Vue 实现页面的核心方法 创建 Vue 项目 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 是官方脚手架工具,适合传统项目;Vite 提供更快的现代构建体验。 npm cre…