当前位置:首页 > VUE

vue实现登录网页

2026-02-19 19:08:10VUE

使用 Vue 实现登录网页

创建 Vue 项目

使用 Vue CLI 快速初始化项目:

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

设计登录表单

src/views/Login.vue 中编写登录表单:

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

<script>
export default {
  data() {
    return {
      username: "",
      password: "",
    };
  },
  methods: {
    handleLogin() {
      // 模拟登录逻辑
      if (this.username === "admin" && this.password === "123456") {
        alert("登录成功");
        this.$router.push("/dashboard");
      } else {
        alert("用户名或密码错误");
      }
    },
  },
};
</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;
}
input {
  width: 100%;
  padding: 8px;
  margin-top: 5px;
}
button {
  background: #42b983;
  color: white;
  padding: 10px 15px;
  border: none;
  border-radius: 4px;
  cursor: pointer;
}
</style>

配置路由

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

import { createRouter, createWebHistory } from "vue-router";
import Login from "../views/Login.vue";
import Dashboard from "../views/Dashboard.vue";

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

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

export default router;

添加状态管理(可选)

使用 Vuex 或 Pinia 管理登录状态(以 Pinia 为例):
安装 Pinia:

npm install pinia

src/stores/auth.js 中定义 Store:

import { defineStore } from "pinia";

export const useAuthStore = defineStore("auth", {
  state: () => ({
    isAuthenticated: false,
    user: null,
  }),
  actions: {
    login(username, password) {
      if (username === "admin" && password === "123456") {
        this.isAuthenticated = true;
        this.user = { username };
        return true;
      }
      return false;
    },
    logout() {
      this.isAuthenticated = false;
      this.user = null;
    },
  },
});

Login.vue 中调用:

<script>
import { useAuthStore } from "../stores/auth";
import { mapActions } from "pinia";

export default {
  data() {
    return { username: "", password: "" };
  },
  methods: {
    ...mapActions(useAuthStore, ["login"]),
    async handleLogin() {
      const success = await this.login(this.username, this.password);
      if (success) {
        this.$router.push("/dashboard");
      } else {
        alert("登录失败");
      }
    },
  },
};
</script>

表单验证增强

使用 vee-validate 或自定义验证规则:
安装 vee-validate

npm install vee-validate

示例代码:

<template>
  <Form @submit="handleLogin">
    <Field name="username" v-model="username" rules="required" />
    <ErrorMessage name="username" />
    <Field name="password" v-model="password" rules="required|min:6" />
    <ErrorMessage name="password" />
    <button type="submit">登录</button>
  </Form>
</template>

后端接口对接

通过 Axios 调用真实 API:

import axios from "axios";

methods: {
  async handleLogin() {
    try {
      const response = await axios.post("/api/login", {
        username: this.username,
        password: this.password,
      });
      if (response.data.success) {
        localStorage.setItem("token", response.data.token);
        this.$router.push("/dashboard");
      }
    } catch (error) {
      alert(error.response.data.message);
    }
  },
}

通过以上步骤,可实现完整的 Vue 登录功能,涵盖表单设计、路由控制、状态管理及后端交互。

vue实现登录网页

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

相关文章

vue 实现在线预览

vue 实现在线预览

Vue 实现在线预览的常见方法 使用 iframe 嵌入 通过 iframe 标签可以嵌入多种类型的文件,如 PDF、图片、网页等。需要确保文件地址可访问。 <template>…

vue实现活动倒计时

vue实现活动倒计时

实现活动倒计时的基本思路 在Vue中实现活动倒计时通常需要获取当前时间与活动结束时间的差值,并将其转换为天、小时、分钟、秒的格式展示。通过定时器每秒更新显示的时间。 定义倒计时数据 在Vue组件的…

vue实现图集

vue实现图集

Vue 实现图集的方法 在 Vue 中实现图集功能可以通过多种方式完成,以下是一些常见的方法和实现步骤。 使用第三方库(如 vue-image-lightbox) 安装 vue-image-ligh…

vue实现过滤

vue实现过滤

Vue实现过滤的方法 在Vue中实现数据过滤可以通过多种方式完成,以下是几种常见的方法: 使用计算属性过滤 计算属性是Vue中处理数据过滤的理想选择,它们基于响应式依赖进行缓存,只有在相关依赖发生…

vue筛选实现

vue筛选实现

Vue 筛选实现方法 使用计算属性实现筛选 计算属性是 Vue 中实现数据筛选的常用方式。通过定义一个计算属性,可以根据输入的条件动态过滤数据。 <template> <div…

vue实现试卷

vue实现试卷

Vue实现试卷系统的基本思路 使用Vue.js构建试卷系统需要结合组件化开发、状态管理和后端数据交互。核心功能包括题目展示、答题逻辑、计时器和提交答案。 核心功能模块划分 试卷组件结构 试卷容器组…