我的Git仓库:https://gitee.com/msyycn/vue3-hei-ma.git
pnpm i @element-plus/icons-vue
注册
注册
← 返回
登录
记住我
忘记密码?
登录
注册 →
【需求】注册页面基本校验
【进阶】再次输入密码需要自定义校验规则,和密码框值一致(可选)
注意:
const formModel = ref({
username: '',
password: '',
repassword: ''
})
...
(其他两个也要绑定)
const rules = {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ min: 5, max: 10, message: '用户名必须是5-10位的字符', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{
pattern: /^\S{6,15}$/,
message: '密码必须是6-15位的非空字符',
trigger: 'blur'
}
],
repassword: [
{ required: true, message: '请再次输入密码', trigger: 'blur' },
{
pattern: /^\S{6,15}$/,
message: '密码必须是6-15的非空字符',
trigger: 'blur'
},
{
validator: (rule, value, callback) => {
if (value !== formModel.value.password) {
callback(new Error('两次输入密码不一致!'))
} else {
callback()
}
},
trigger: 'blur'
}
]
}
...
(其他两个也要绑定prop)
LoginPage.vue
源码(URL: http://localhost:5173/login
)
注册
注册
← 返回
登录
记住我
忘记密码?
登录
注册 →
App.vue
需求:点击注册按钮,注册之前,需要先校验
const form = ref()
注册
const register = async () => {
await form.value.validate()
console.log('开始注册请求')
}
需求:封装注册api,进行注册,注册成功切换到登录
import request from '@/utils/request'
export const userRegisterService = ({ username, password, repassword }) =>
request.post('/api/reg', { username, password, repassword })
const register = async () => {
await form.value.validate()
await userRegisterService(formModel.value)
ElMessage.success('注册成功')
// 切换到登录
isRegister.value = false
}
eslintrc
中声明全局变量名, 解决 ElMessage 报错问题module.exports = {
...
globals: {
ElMessage: 'readonly',
ElMessageBox: 'readonly',
ElLoading: 'readonly'
}
}
【需求说明】给输入框添加表单校验
操作步骤:
...
watch(isRegister, () => {
formModel.value = {
username: '',
password: '',
repassword: ''
}
})
【需求说明1】登录之前的预校验
【需求说明2】登录功能
【测试账号】
登录的测试账号: shuaipeng
登录测试密码: 123456
PS: 每天账号会重置,如果被重置了,可以去注册页,注册一个新号
实现步骤:
const login = async () => {
await form.value.validate()
console.log('开始登录')
}
export const userLoginService = ({ username, password }) =>
request.post('api/login', { username, password })
const userStore = useUserStore()
const router = useRouter()
const login = async () => {
await form.value.validate()
const res = await userLoginService(formModel.value)
userStore.setToken(res.data.token)
ElMessage.success('登录成功')
router.push('/')
}
“中秋快乐呀!”
下一期学习笔记会尽快更新的。