当前位置:首页 > VUE

vue实现登了页面

2026-01-18 03:49:00VUE

Vue 登录页面实现步骤

创建登录表单组件

在 Vue 项目中创建一个登录组件,通常命名为 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">登录</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;
}
.form-group {
  margin-bottom: 15px;
}
label {
  display: block;
  margin-bottom: 5px;
}
input {
  width: 100%;
  padding: 8px;
  box-sizing: border-box;
}
button {
  width: 100%;
  padding: 10px;
  background-color: #42b983;
  color: white;
  border: none;
  cursor: pointer;
}
</style>

添加表单验证

使用 Vue 的 computed 属性或第三方库如 VeeValidate 实现表单验证。

<script>
export default {
  data() {
    return {
      username: "",
      password: "",
      error: "",
    };
  },
  computed: {
    isValid() {
      return this.username.length > 0 && this.password.length > 0;
    },
  },
  methods: {
    handleLogin() {
      if (!this.isValid) {
        this.error = "请输入用户名和密码";
        return;
      }
      // 登录逻辑
    },
  },
};
</script>

实现登录逻辑

handleLogin 方法中调用后端 API 进行身份验证,通常使用 axios 发送请求。

<script>
import axios from "axios";

export default {
  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) {
        this.error = "登录失败,请检查用户名和密码";
      }
    },
  },
};
</script>

添加路由配置

在 Vue Router 中配置登录页面的路由。

import Vue from "vue";
import Router from "vue-router";
import Login from "./views/Login.vue";

Vue.use(Router);

export default new Router({
  routes: [
    {
      path: "/login",
      name: "login",
      component: Login,
    },
  ],
});

添加导航守卫

使用 Vue Router 的导航守卫保护需要认证的路由。

router.beforeEach((to, from, next) => {
  const isAuthenticated = localStorage.getItem("token");
  if (to.name !== "login" && !isAuthenticated) {
    next({ name: "login" });
  } else {
    next();
  }
});

状态管理(可选)

对于大型应用,可以使用 Vuex 管理用户认证状态。

import Vue from "vue";
import Vuex from "vuex";

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    user: null,
    token: null,
  },
  mutations: {
    setUser(state, user) {
      state.user = user;
    },
    setToken(state, token) {
      state.token = token;
    },
  },
  actions: {
    login({ commit }, { username, password }) {
      return axios.post("/api/login", { username, password }).then((response) => {
        commit("setUser", response.data.user);
        commit("setToken", response.data.token);
        localStorage.setItem("token", response.data.token);
      });
    },
  },
});

响应式布局

确保登录页面在不同设备上都能正常显示。

@media (max-width: 600px) {
  .login-container {
    padding: 10px;
    max-width: 100%;
  }
}

错误处理

增强错误处理逻辑,提供更友好的用户反馈。

<template>
  <div v-if="error" class="error-message">
    {{ error }}
  </div>
</template>

<style scoped>
.error-message {
  color: red;
  margin-bottom: 15px;
}
</style>

以上步骤涵盖了 Vue 登录页面的基本实现,包括表单创建、验证、API 调用、路由配置和状态管理。根据实际需求可以进一步扩展功能如记住我、第三方登录等。

vue实现登了页面

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

相关文章

vue请求实现进度条

vue请求实现进度条

实现请求进度条的方法 在Vue中实现请求进度条可以通过多种方式完成,常见的有使用第三方库如axios结合nprogress或自定义进度条组件。以下是几种实现方法: 使用axios和nprogress…

vue 指令实现

vue 指令实现

Vue 指令实现 Vue 指令是 Vue.js 提供的特殊属性,用于在 DOM 元素上添加特殊行为。指令以 v- 前缀开头,例如 v-model、v-if、v-for 等。以下是实现自定义指令和常用内…

vue页面实现

vue页面实现

Vue 页面实现方法 创建 Vue 组件 使用 Vue 单文件组件(SFC)方式创建页面,文件扩展名为 .vue。一个基本的 Vue 组件包含三个部分:模板(template)、脚本(script)和…

vue 实现滚动

vue 实现滚动

实现滚动的基本方法 在Vue中实现滚动效果可以通过多种方式完成,包括使用原生JavaScript、CSS或第三方库。以下是一些常见的方法: 使用window.scrollTo方法实现页面滚动 可以…

vue实现suspense

vue实现suspense

Vue 3 中实现 Suspense Suspense 是 Vue 3 引入的一个内置组件,用于处理异步依赖的加载状态。它允许在等待异步组件或异步数据加载时显示一个后备内容(fallback),直到异…

vue实现文字

vue实现文字

Vue 中实现文字显示的方法 在 Vue 中实现文字显示可以通过多种方式,包括插值表达式、指令、组件等。以下是几种常见的实现方法: 插值表达式 使用双大括号 {{ }} 进行文本插值,这是 Vue…