微信小程序 16 登录界面

article/2025/10/8 10:56:17

16.1 登录界面


html

<view class="container"><view class="wrapper"><view class="left-top-sign">LOGIN</view><view class="welcome">欢迎回来!</view><view class="input-content"><view class="input-item"><text class="tit">手机号码</text><input  type="text" placeholder="请输入手机号码" model:value="{{phone}}"/></view><view class="input-item"><text class="tit">密码</text><input type="password"  placeholder="请输入密码" model:value="{{password}}"/></view></view><button class="confirm-btn" bindtap="login">登录</button><view class="forget-section">忘记密码?</view></view><view class="register-section">还没有账号?<text >马上注册</text></view>
</view>

css

/* pages/login/login.wxss */.wrapper{position:relative;z-index: 90;padding-bottom: 40rpx;
}.left-top-sign{font-size: 120rpx;color: #f8f8f8;position:relative;left: -16rpx;
}.welcome{position:relative;left: 50rpx;top: -90rpx;font-size: 46rpx;color: #555;
}.input-content{padding: 0 60rpx;
}
.input-item{display:flex;flex-direction: column;align-items:flex-start;justify-content: center;padding: 0 30rpx;background:#f8f6fc;height: 120rpx;border-radius: 4px;margin-bottom: 50rpx;}.input-item:last-child{margin-bottom: 0;
}
.input-item .tit{height: 50rpx;line-height: 56rpx;font-size: 30rpx;color: #606266;
}
.input-item input{height: 60rpx;font-size: 30rpx;color: #303133;width: 100%;
}
.confirm-btn{width: 630rpx!important;height: 76rpx;line-height: 76rpx;border-radius: 50rpx;margin-top: 70rpx;background: #d43c33;color: #fff;font-size: 32rpx;padding: 0;
}
.confirm-btn2:after{border-radius: 100px;
}.forget-section{font-size: 28rpx;color: #4399fc;text-align: center;margin-top: 40rpx;
}.register-section{position:absolute;left: 0;bottom: 50rpx;width: 100%;font-size: 28rpx;color: #606266;text-align: center;}
.register-section text{color: #4399fc;margin-left: 10rpx;
}

在这里插入图片描述


16.2 简单的了解事件委托

在 2022 年之前,如果 我们想在小程序里,做到 双向数据绑定。并且 用一个事件绑定多个元素的话。可能会用到 事件委托 和 事件函数里 event 对象传过来的值。

所以我们也趁此机会 了解一下 事件委托是什么。

事件委托也叫事件代理,“事件代理”即是把原本需要绑定在子元素的响应事件(click、keydown…)委托给父元素,让父元素担当事件监听的职务。事件代理的原理是DOM元素的事件冒泡。

事件冒泡即一个元素的事件触发后,会依次一级一级往上调用父级元素的同名事件,直到 window(浏览器窗口)。这个其实也很好理解,子元素被父元素包裹着,当你触发了子元素的事件,那可不就是也相当于触发了 父元素的事件嘛。但是浏览器也没那么傻,它还是能知道源头是谁的。并且把这个源头 保存到了 event.target 里面了。

那么有意思的操作就来了:

当我们 只给 父元素绑定事件的时候,点击里面的 子元素时,这个绑定在父元素的事件也会被触发,因为 子元素也是父元素的一部分。就相当于触发了 父元素的事件。那么 此时此刻 event.target 拿到的 源头 肯定 还是 这个子元素。所以我们说 这个时候,我们只需要判断 这个 源头是谁,然后进行特殊的判断附加其功能 即可。

<button id="btn">添加列表项目</button>
<ul id="list"><li>列表项目1</li><li>列表项目2</li><li>列表项目3</li>
</ul>
<script>var ul = document.getElementById("list");var lis = ul.getElementsByTagName("li");for (var i = 0; i < lis.length; i ++) {lis[i].addEventListener('cluick', function (e) {var e = e || window.event;var target = e.target || e.srcElement;alert(e.target.innerHTML);}, false);}var i = 4;var btn = document.getElementById("btn");btn.addEventListener("click", function() {var li = document.createElement("li");li.innerHTML = "项目列表" + i++;ul.appendChild(li);});
</script>

优点:

  1. 节约内存
  2. 能为之后新增的DOM元素也 添加对应的事件

但是 现在的 微信小程序,已经 不支持这种 原生态的玩法。它 设定了 “双向数据绑定” 的 新特性。

在这里插入图片描述
在这里插入图片描述
这样我们就可以在 js 那里 动态的拿到这些数据了。
在这里插入图片描述
在这里插入图片描述


16.3 功能的实现

  1. 收集表单项数据
  2. 前端验证
    1) 验证用户信息(账号、密码) 是否合法
    2) 前端验证不通过 就给予提示即可,也不需要发请求给后端
    3) 前端验证通过,发请求(携带账号,密码)给 后端
  3. 后端验证
    1) 验证用户是否存在
    2) 用户不存在直接返回,告诉前端用户不存在
    3) 用户存在的话,还需要验证密码 是否正确
    4) 密码不正确 返回给 前端 提示密码不正确
    5) 密码正确返回给前端数据,提示用户登录成功(会携带用户的信息)

收集表单数据这里,还有一个 比较 尬的 知识点。就是 从前端可以传递过去一些静态的数据。

data-xxx:可以直接 传递 一些静态的数据 到 event.target 里面。前提是 你得 绑定 事件,得有 事件函数。所以在这里 就不做 演示了。想了解的,可以去 官网查查。

前端验证

    login(){// 前端验证// 手机号验证let phoneReg = /^1[3-9]\d{9}/; // 正则表达式 直接写 匹配规则就行if(!this.data.phone){wx.showToast({title: '手机号不能为空',icon: 'none'})return;}if(!phoneReg.test(this.data.phone)){wx.showToast({title: '手机号格式错误',icon: 'none'})return;}// 密码验证if(!this.data.password){wx.showToast({title: '密码不能为空',icon: 'none'})return;}// 后端验证},

在这里插入图片描述
后端验证

这里我们先 安装 axios

npm install --save axios

然后 我们要 用 一个 很牛的 云音乐 API。

在这里插入图片描述

// http://localhost:3000/login/cellphone?phone=13278030611&password=159357asd// 后端验证let ret = await request("login/cellphone",{phone: this.data.phone,password: this.data.password});if(ret.code === 200){wx.showToast({title: "登录成功"})}else if(ret.code === 400){wx.showToast({title: "手机号错误",icon: "none"})}else if(ret.code === 502){wx.showToast({title: "密码错误",icon: "none"})}else{wx.showToast({title: "登录失败,请重新登录",icon: "none"})}

若 使用 这个 接口,那么 就得 改写一下 index.js

index.js

// pages/index/index.js
import request from "../../utils/request";
Page({/*** 页面的初始数据*/data: {banners:[], // 轮播图的数据recommendList: [], // 推荐歌单topList: [] // 排行榜},/*** 生命周期函数--监听页面加载*/ async onLoad(options) {let bannerListData = await request("banner");let recommendListData = await request("personalized",{limit:10});let topListHots = await request("playlist/hot",{});let topListDataArr = [];///playlist/track/all?id=24381616&limit=10&offset=1let cnt = 0; //let i = 0;while(cnt < 3){let id = topListHots.tags[i].id;let name = topListHots.tags[i].name;let topListData = await request("playlist/track/all",{id: id,limit: 3,offset: 0});i++;if(topListData.message == "登录后才可查看" || topListData.message == "no resource" ||topListData.songs.length == 0){continue;}topListData = {name: name, data: topListData};cnt++;topListDataArr.push(topListData);}this.setData({banners: bannerListData.banners,recommendList: recommendListData.result,topList: topListDataArr})},/*** 生命周期函数--监听页面初次渲染完成*/onReady() {},/*** 生命周期函数--监听页面显示*/onShow() {},/*** 生命周期函数--监听页面隐藏*/onHide() {},/*** 生命周期函数--监听页面卸载*/onUnload() {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh() {},/*** 页面上拉触底事件的处理函数*/onReachBottom() {},/*** 用户点击右上角分享*/onShareAppMessage() {}
})

在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/oYl3OnjY.shtml

相关文章

微信小程序登录注册界面

微信小程序登录注册界面demo,存在不足之处,请指教! 界面图片&#xff1a; 1.js代码&#xff1a; Page({/*** 页面的初始数据*/data: {current:1,codeText:获取验证码,counting:false,},// 登陆注册监听click(e){let index e.currentTarget.dataset.code;this.setData({cur…

微信小程序登录界面的实现

首先是未登录时的界面&#xff0c;提示用户登录之后使用全部的功能。 用户点击登录&#xff0c;调用API拿到用户的信息并在页面中显示出来&#xff0c;同时将用户的信息保存在本地。向后端发送POST请求&#xff0c;拿到code&#xff0c;拿到token&#xff0c;并保存在本地&…

(一)微信小程序云开发之登录界面设计

最近在开发微信小程序&#xff0c;现阶段采用的云开发的方式。云开发与使用本地服务器开发还存在着一定的差异。本地服务器的开发后续记录。这里并没有记录微信小程序的云开发项目的创建方式。 先对微信小程序简单的登录界面做出实例。 1、登录界面UI 2、代码 2.1wxml login…

微信小程序开发(2)—— 简单的页面登陆实现

微信小程序开发&#xff08;2&#xff09; 二、简单的登陆实现&#xff08;非授权登录&#xff09;新建文件夹进入login.wxml界面进入login.wxss进入login.js进入json进入app.json效果图 二、简单的登陆实现&#xff08;非授权登录&#xff09; 新建文件夹 文件夹内新建js、wx…

微信小程序简洁登录页面(附源码)

文章目录 1.登录页面2.用户不存在3.代码3.1 login.wxml3.2 login.css3.3 login.js 4*斜体样式*.总结 1.登录页面 登录的具体流程 1.当用户输入密码和账号后首先检验账号和密码是否为空 2.若不为空&#xff0c;则将输入的账号发送到后端&#xff0c;首先判断账号是否存在 3.若账…

接口压力测试脚本

performance.py #构造性能测试基类 import re import time import requests import threading #初始化url、method&#xff08;默认get&#xff09;、header&#xff08;默认为空字典&#xff09;等参数, #这里Performance类重写父类threading.Thread的__init__方法,会覆盖父类…

超实用压力测试工具-ab工具

写在前面 在学习ab工具之前&#xff0c;我们需了解几个关于压力测试的概念 吞吐率&#xff08;Requests per second&#xff09; 概念&#xff1a;服务器并发处理能力的量化描述&#xff0c;单位是reqs/s&#xff0c;指的是某个并发用户数下单位时间内处理的请求数。某个并发用…

接口压测测试

Jmeter测试接口&#xff08;包括登陆操作&#xff09; 创建HTTP Request先登录参考&#xff1a; http://blog.csdn.net/ab_2016/article/details/78249686 注意&#xff1a;勾选FollowRedirects 自动重定向Redirect Automatically&#xff1a;HttpClient接收到请求后&#x…

接口测试及常用接口测试工具

首先&#xff0c;什么是接口呢&#xff1f; 接口一般来说有两种&#xff0c;一种是程序内部的接口&#xff0c;一种是系统对外的接口。 系统对外的接口&#xff1a;比如你要从别的网站或服务器上获取资源或信息&#xff0c;别人肯定不会把数据库共享给你&#xff0c;他只能给你…

【接口压测】

感悟 最近在做的项目中,需要去做核心接口的压测工作,初次在实际项目中进行接口压测,本人属实有点慌张. 在经历了几周的时间,自己的压测脚本,从最初的单线程,变成多线程,最后又通过协程的方式去实现. 接口压测,首先需要去选择一款适合自己的压测工具,jmeter,loadrunner,locust等…

Postman 接口压力测试

第一步&#xff1a;点击Collections中的 按钮新增一个Collection 第二步&#xff1a;新增一个 request 第三步&#xff08;可选&#xff09;&#xff1a;可以分别对 collection 和 request 进行重命名 第四步&#xff1a;修改 request 中的 RequestBody 以及 URL&#xff0c;…

常用的接口测试工具有哪些?

点击上方“朱小厮的博客”&#xff0c;选择“设为星标” 后台回复"加群"&#xff0c;加入新技术群 来源&#xff1a;8rr.co/nxMW Poster 这是火狐浏览器的一个插件&#xff0c;如果你想调试服务器&#xff0c;发出HTTP请求&#xff0c;Poster操作简单&#xff0c;你先…

接口测试工具

一、Apifox和Postman各自的定义 1、Postman是一款支持http协议的接口调试与测试工具&#xff0c;其主要特点就是功能强大&#xff0c;使用简单且易用性好 。无论是开发人员进行接口调试&#xff0c;还是测试人员做接口测试&#xff0c;postman都是我们的首选工具之一 。 2、A…

api接口压力测试

可借助Apache组件进行压力测试 E:\phpStudy\Apache\bin\ab.exe 使用于http请求 E:\phpStudy\Apache\bin\abs.exe 使用于https请求 出现如下图就是请求成功的&#xff0c;执行命令 abs.exe -c 60 -n 1000 https://test.shop.cn/user/login 用于GET请求&#xff0c;并发60&…

一个简单的接口压力测试

最近接到一个需求&#xff0c;对一个微信公众号上的一个登录进行压力测试&#xff0c;看是否存在压力问题。 刚拿到需求有点瞢&#xff0c;1.这个程序不是公司的开发做的&#xff0c;是第三方做的2.没有问题说明&#xff0c;只能自己想把法。 好吧&#xff0c;领导要求完成任务…

API 接口压力测试

1、下载siege的安装包&#xff0c;我用的是siege-4.0.4.tar.gz 版本的。 下载地址&#xff1a;http://download.joedog.org/siege/ cd siege-4.0.4 ./configure make sudo make install 2、测试 post接口 siege -c 100 -t 10s -b http://192.168.***.***:7027/predict P…

ab一款好用的压力测试工具

一、介绍 ab 命令会创建很多的并发访问线程&#xff0c;模拟多个访问者同时对某一 URL 地址进行访问。它的测试目标是基于 URL 的&#xff0c;因此&#xff0c;既可以用来测试 Apache 的负载压力&#xff0c;也可以测试 nginx、lighthttp、tomcat、IIS 等其它 Web 服务器的压力…

强大的接口测试与压力测试工具——postmanjmeter

对于系分的项目&#xff0c;我使用了postman做接口测试&#xff0c;用jmeter做压力测试。下面来谈谈这两个工具的使用方法。 Postman postman是一款很方便的接口测试工具&#xff0c;有app也有chrome插件&#xff0c;它可以模拟用户发起的各类HTTP请求&#xff0c;然后获得相应…

压力测试工具----JMeter

一、压力测试介绍及性能指标 1.压力测试介绍 压力测试考察当前软硬件环境下系统能承受的最大负荷并帮助找出系统的瓶颈所在&#xff0c;压测都是为了系统在线上的处理能力和稳定性维持在一个标准的范围内&#xff0c;做到心中有数.   使用压力测试&#xff0c;我们有希望找到…