当前位置: 首页 > wzjs >正文

网站开发 先做前端吗合川网站建设

网站开发 先做前端吗,合川网站建设,网站开发视频百度云,汕头制作公司网站在 Web 开发的世界里,登录页是用户与应用交互的第一道门槛,它的体验好坏直接影响着用户对整个应用的印象。本文将详细记录如何使用 Vue3、Vant 组件库和 Axios 构建一个兼具美观与实用的登录页面,并实现完整的登录逻辑与数据验证,…

在 Web 开发的世界里,登录页是用户与应用交互的第一道门槛,它的体验好坏直接影响着用户对整个应用的印象。本文将详细记录如何使用 Vue3、Vant 组件库和 Axios 构建一个兼具美观与实用的登录页面,并实现完整的登录逻辑与数据验证,带你一步步打造一个高质量的登录功能。

一、项目初始化与技术栈选择

本次项目基于 Vue3 进行开发,Vue3 以其高效的响应式系统和组合式 API,极大地提升了代码的可读性和可维护性。同时引入 Vant 组件库,它提供了丰富的移动端组件,方便快速搭建界面;Axios 则用于处理 HTTP 请求,与后端进行数据交互。

首先,确保本地已安装 Node.js 环境,使用以下命令创建一个新的 Vue3 项目:

npm init vue@latest

按照提示完成项目初始化,进入项目目录并安装 Vant 和 Axios: 

cd your-project-name
npm install vant axios

main.js中引入 Vant 组件和样式: 

 

import { createApp } from 'vue';
import App from './App.vue';
import Vant from 'vant';
import 'vant/lib/index.css';const app = createApp(App);
app.use(Vant);
app.mount('#app');

二、页面布局与样式设计

登录页面的布局通过 HTML 模板和 CSS 样式来实现。整体页面结构如下:

<template><div class="login_box"><img src="../assets/aircraft.png" alt="" class="aircraft" /><div class="login_form"><input placeholder="请输入手机号" v-model="phone" class="phone" /><input placeholder="请输入密码" v-model="password" class="password" type="password" /><div class="auth_links"><div class="user_agreement"><van-checkbox-group v-model="checked" shape="square"><van-checkbox name="a"><div class="agreement">用户协议</div></van-checkbox></van-checkbox-group></div><div class="forget_password"><div class="forget">忘记密码?</div><div class="forget">前往注册</div></div></div><van-button type="warning" class="publish" @click="login">登录</van-button></div><img src="../assets/WeChat.png" alt="" class="img_WeChat"><!-- 底部标识 --><div class="sign">@版权归大喇叭编程实训基地所有</div></div>
</template>

CSS 样式部分通过<style scoped>标签实现样式作用域隔离,保证样式仅作用于当前组件 

<style scoped>
* {margin: 0;padding: 0;
}.login_box {width: 100%;height: 100vh;background-image: url('../assets/login_back.png');background-size: cover;
}.aircraft {width: 50%;position: absolute;top: 10%;left: 15%;
}.login_form {width: 90%;height: 260px;position: absolute;top: 30%;left: 5%;background-color: rgba(255, 255, 255, 0.5);border-radius: 10px;
}.publish {width: 95%;height: 50px;position: absolute;bottom: 10px;left: 2.5%;border-radius: 10px;background-color: rgba(42, 130, 228, 1);color: #fff;font-size: 18px;text-align: center;line-height: 50px;border: none;
}.phone {width: 90%;height: 40px;top: 15%;left: 5%;border-radius: 3px;background-color: rgb(255, 255, 255);text-indent: 5px;margin-left: 5%;margin-top: 20px;border: none;
}/* 新增密码输入框的样式 */
.password {width: 90%;height: 40px;top: 15%;left: 5%;border-radius: 3px;background-color: rgb(255, 255, 255);text-indent: 5px;margin-left: 5%;margin-top: 20px;border: none;
}.auth_links {width: 90%;height: 40px;margin-left: 5%;margin-top: 10px;display: flex;justify-content: space-between;
}#agreement_box {width: 18px;height: 18px;margin-top: 10px;margin-left: 5px;
}.user_agreement {display: flex;
}.agreement {line-height: 40px;font-size: 14px;color: rgba(42, 130, 228, 1);
}.forget {line-height: 40px;margin-right: 20px;font-size: 14px;color: rgba(42, 130, 228, 1);
}.forget_password {display: flex;
}.img_WeChat {width: 50px;height: 50px;position: fixed;bottom: 20%;left: 45%;
}.sign {width: 100%;height: 30px;position: fixed;bottom: 13%;color: rgba(80, 80, 80, 1);text-align: center;line-height: 30px;
}
</style>

上述代码中,.login_box设置了背景图片,作为整个登录页的背景;.login_form包裹了输入框、协议选择和登录按钮,通过定位和样式设置,使其在页面中居中显示;输入框和按钮使用了简单的样式设计,保证清晰易用。

三、登录逻辑与数据验证

<script setup>中实现登录逻辑和数据验证。首先引入必要的 Vue 和 Axios 相关模块:

import { useRouter, useRoute } from "vue-router";
import { ref } from "vue";
import { onMounted, onUnmounted } from 'vue';import axios from "axios";
import { showToast } from 'vant';

定义响应式数据,用于存储手机号、密码和协议勾选状态: 

const router = useRouter();
const route = useRoute();const phone = ref("");
const password = ref("");
const checked = ref();

核心的登录函数login实现了完整的登录逻辑:

const login = async () => {try {// 验证手机号if (!phone.value) {return showToast({ message: '请输入手机号', position: 'top' });}if (!/^1[3-9]\d{9}$/.test(phone.value)) {return showToast({ message: '请输入正确的手机号', position: 'top' });}// 验证密码if (!password.value) {return showToast({ message: '请输入密码', position: 'top' });}if (password.value.length < 6 || password.value.length > 18) {return showToast({ message: '密码长度必须在6-18之间', position: 'top' });}// 验证用户协议if (!checked.value || !checked.value.length) {return showToast({ message: '请阅读并同意用户协议', position: 'top' });}// 添加加载状态const loadingToast = showToast({message: '登录中...',position: 'top',duration: 0,forbidClick: true});// 发送登录请求const response = await axios.post('登录接口地址', {tel: phone.value,pass: password.value});// 关闭加载提示loadingToast.close();// 处理响应if (response.data.code === 1) {showToast({ message: '登录成功', position: 'top' });// 打印返回的数据console.log('登录成功,返回数据:', response.data);// 如果需要,可以将数据存储到本地sessionStorage.setItem('userData', JSON.stringify(response.data));router.push({ name: 'home' });} else {console.log('登录失败,返回数据:', response.data);showToast({ message: response.data.msg || '登录失败', position: 'top' });}} catch (error) {// 关闭加载提示if (loadingToast) loadingToast.close();console.error('登录出错:', error);showToast({message: error.response?.data?.message || '网络错误,请重试',position: 'top'});}
}

在登录函数中,首先对手机号、密码和用户协议进行严格验证,确保用户输入的数据符合要求。然后通过 Axios 发送登录请求,在请求发送前显示加载提示,请求完成后根据响应结果进行相应处理。登录成功时,将用户数据存储到本地,并跳转到首页;登录失败则提示用户错误信息。

四、优化与拓展方向

  1. 表单验证优化:可以使用更专业的表单验证库,如vee-validate,提升验证的灵活性和用户体验。
  2. 错误处理增强:对 Axios 请求的错误处理进一步细化,根据不同的错误状态码返回更友好的提示。
  3. 安全性提升:对密码进行加密传输,防止密码在网络传输过程中被窃取。
  4. 响应式设计:优化页面在不同设备上的显示效果,提升移动端体验。

通过以上步骤,我们成功构建了一个功能完整、界面美观的 Vue3 登录页面。希望本文能为你的 Vue 开发之路提供一些帮助,如果你在实践过程中有任何问题,欢迎在评论区交流讨论!

http://www.dtcms.com/wzjs/101919.html

相关文章:

  • 婚恋网站需求分析手机如何建网站
  • 南岸网站建设哪家好营销网站案例
  • 平凉公司网站建设今日热点
  • 北京中小企业公司名单怎么样做免费的百度seo
  • 做网站需要什么手续资料企业网站建设方案
  • 青海公司网站建设哪家快上海优化seo公司
  • 做网站的岗位叫什么找一个免费域名的网站
  • 国外可以用什么网站做问卷合肥网站推广优化公司
  • 网站开发要用cms精准营销的成功案例
  • 有没有做logo的网站网站管理与维护
  • 网站上加一个浮动小框怎么做信息流广告投放公司
  • 网站链接结构有哪些2022年新闻大事
  • 宝安网站设计师域名注册网站
  • 日本人与黑人做爰视频网站青岛网
  • 西数 网站建设视频号视频下载助手app
  • wordpress 广播条汉中seo培训
  • 导航网站制作教程备案查询
  • 天美影视传媒有限公司招聘网站站外优化推广方式
  • 黄冈网站建设费用公司网站推广技巧
  • 怎样做网站外链关键词怎样做优化排名
  • wordpress更新显示失败seo培训课程
  • 支付宝网站怎么设计的宁波seo网站服务
  • 单页网站 产品放哪免费长尾词挖掘工具
  • 桂林网站排名湖南seo优化公司
  • 网站优化报价单网页设计的流程
  • 网站建设公司浩森宇特百度网站权重查询
  • 西宁做网站的公司bj君博沟通最近七天的新闻大事
  • 建设部作业证件查询官方网站辽宁seo推广
  • 关于网站的毕业论文培训课程
  • 深圳网站建设好吗学seo哪个培训好