当前位置:首页 > VUE

vue实现登录页面模板

2026-02-24 14:56:21VUE

Vue 登录页面模板实现

基础结构

使用 Vue CLI 或 Vite 创建项目后,在 src/viewssrc/pages 目录下创建 Login.vue 文件。基础模板包含表单元素、数据绑定和样式:

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

<script>
export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      }
    }
  },
  methods: {
    handleSubmit() {
      console.log('提交数据:', this.form)
      // 这里添加登录逻辑
    }
  }
}
</script>

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

表单验证

添加 VeeValidate 或 Element UI 的表单验证功能:

<script>
import { required, minLength } from 'vuelidate/lib/validators'

export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      }
    }
  },
  validations: {
    form: {
      username: { required },
      password: { required, minLength: minLength(6) }
    }
  },
  methods: {
    handleSubmit() {
      this.$v.$touch()
      if (!this.$v.$invalid) {
        // 验证通过后的逻辑
      }
    }
  }
}
</script>

路由配置

router/index.js 中配置登录路由:

vue实现登录页面模板

const routes = [
  {
    path: '/login',
    name: 'Login',
    component: () => import('../views/Login.vue')
  }
]

状态管理

使用 Vuex 存储登录状态:

// store/modules/auth.js
export default {
  state: {
    isAuthenticated: false,
    user: null
  },
  mutations: {
    setAuth(state, payload) {
      state.isAuthenticated = payload.isAuthenticated
      state.user = payload.user
    }
  },
  actions: {
    login({ commit }, credentials) {
      return api.login(credentials).then(response => {
        commit('setAuth', {
          isAuthenticated: true,
          user: response.data.user
        })
      })
    }
  }
}

完整功能集成

结合 API 请求和路由跳转的完整示例:

vue实现登录页面模板

<script>
import { mapActions } from 'vuex'

export default {
  data() {
    return {
      form: {
        username: '',
        password: ''
      },
      loading: false,
      error: null
    }
  },
  methods: {
    ...mapActions(['login']),
    async handleSubmit() {
      this.loading = true
      this.error = null
      try {
        await this.login(this.form)
        this.$router.push('/dashboard')
      } catch (error) {
        this.error = error.message || '登录失败'
      } finally {
        this.loading = false
      }
    }
  }
}
</script>

响应式设计

添加媒体查询适应不同屏幕:

@media (max-width: 768px) {
  .login-container {
    width: 90%;
    padding: 15px;
  }
}

第三方登录

集成 Google 或 GitHub 登录按钮:

<template>
  <div class="social-login">
    <button @click="loginWithGoogle">Google登录</button>
    <button @click="loginWithGithub">GitHub登录</button>
  </div>
</template>

<script>
export default {
  methods: {
    loginWithGoogle() {
      // 调用Firebase或其他OAuth服务
    },
    loginWithGithub() {
      // GitHub OAuth实现
    }
  }
}
</script>

标签: 模板页面
分享给朋友:

相关文章

jquery页面

jquery页面

jQuery 页面操作指南 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互的操作。以下是 jQuery 在页面中的常见使用方法…

uniapp隐私政策模板

uniapp隐私政策模板

隐私政策模板(UniApp适用) 以下是一个适用于UniApp的隐私政策模板,可根据实际业务需求调整内容。注意需符合《个人信息保护法》《网络安全法》等法律法规要求。 个人信息收集与使用 应用可能收集…

elementui模板

elementui模板

ElementUI 模板使用指南 ElementUI 是一个基于 Vue.js 的组件库,提供丰富的 UI 组件,适用于快速开发中后台管理系统。以下是 ElementUI 模板的常见用法和资源推荐。…

vue实现页面刻度

vue实现页面刻度

实现页面刻度的基本思路 在Vue中实现页面刻度通常用于展示进度、测量或标记特定位置。可以通过动态计算和渲染刻度元素来实现,结合CSS样式控制显示效果。 使用动态渲染刻度线 通过v-for指令动态生成…

实现js页面跳转页面

实现js页面跳转页面

使用 window.location.href 通过修改 window.location.href 实现跳转,浏览器会加载新页面并记录到历史记录中: window.location.href = "…

jquery 模板

jquery 模板

jQuery 模板的使用方法 jQuery 本身不提供内置的模板引擎,但可以通过插件或结合其他库实现模板功能。常见的方案包括使用 jQuery 结合 Handlebars、Mustache 或 Und…