登录页面用vue实现
使用Vue实现登录页面
Vue.js是一个流行的前端框架,适合构建单页应用(SPA)。以下是一个简单的登录页面实现方法。
创建Vue项目
确保已安装Node.js和Vue CLI。通过命令行初始化一个新项目:
vue create login-page
cd login-page
安装必要依赖
如果需要表单验证,可以安装VeeValidate:

npm install vee-validate
编写登录组件
在src/components目录下创建Login.vue文件:
<template>
<div class="login-container">
<h2>用户登录</h2>
<form @submit.prevent="handleSubmit">
<div class="form-group">
<label for="username">用户名</label>
<input
type="text"
id="username"
v-model="form.username"
required
>
</div>
<div class="form-group">
<label for="password">密码</label>
<input
type="password"
id="password"
v-model="form.password"
required
>
</div>
<button type="submit">登录</button>
</form>
</div>
</template>
<script>
export default {
data() {
return {
form: {
username: '',
password: ''
}
}
},
methods: {
handleSubmit() {
// 这里添加登录逻辑
console.log('登录数据:', this.form)
// 通常这里会调用API进行验证
}
}
}
</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;
}
button {
width: 100%;
padding: 10px;
background-color: #42b983;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
}
</style>
添加路由
在src/router/index.js中配置路由:

import Vue from 'vue'
import Router from 'vue-router'
import Login from '@/components/Login'
Vue.use(Router)
export default new Router({
routes: [
{
path: '/login',
name: 'Login',
component: Login
}
]
})
添加表单验证
使用VeeValidate进行更复杂的验证:
<template>
<div>
<ValidationObserver v-slot="{ handleSubmit }">
<form @submit.prevent="handleSubmit(onSubmit)">
<ValidationProvider name="用户名" rules="required" v-slot="{ errors }">
<input v-model="username" type="text">
<span>{{ errors[0] }}</span>
</ValidationProvider>
<ValidationProvider name="密码" rules="required|min:6" v-slot="{ errors }">
<input v-model="password" type="password">
<span>{{ errors[0] }}</span>
</ValidationProvider>
<button type="submit">登录</button>
</form>
</ValidationObserver>
</div>
</template>
<script>
import { ValidationObserver, ValidationProvider } from 'vee-validate'
export default {
components: {
ValidationObserver,
ValidationProvider
},
data() {
return {
username: '',
password: ''
}
},
methods: {
onSubmit() {
// 提交逻辑
}
}
}
</script>
添加API调用
在methods中添加实际的登录请求:
methods: {
async handleSubmit() {
try {
const response = await axios.post('/api/login', {
username: this.form.username,
password: this.form.password
})
// 处理成功响应
localStorage.setItem('token', response.data.token)
this.$router.push('/dashboard')
} catch (error) {
// 处理错误
console.error('登录失败:', error)
}
}
}
添加状态管理
对于更复杂的应用,可以使用Vuex管理登录状态:
// store/modules/auth.js
const state = {
token: localStorage.getItem('token') || '',
status: ''
}
const mutations = {
AUTH_REQUEST(state) {
state.status = 'loading'
},
AUTH_SUCCESS(state, token) {
state.status = 'success'
state.token = token
},
AUTH_ERROR(state) {
state.status = 'error'
}
}
const actions = {
login({ commit }, userData) {
return new Promise((resolve, reject) => {
commit('AUTH_REQUEST')
axios.post('/api/login', userData)
.then(resp => {
const token = resp.data.token
localStorage.setItem('token', token)
commit('AUTH_SUCCESS', token)
resolve(resp)
})
.catch(err => {
commit('AUTH_ERROR')
localStorage.removeItem('token')
reject(err)
})
})
}
}
export default {
state,
mutations,
actions
}
这个实现包含了基本的登录页面功能,可以根据需要进一步扩展和完善。






