微信小程序云开发 之 登录注册界面 详细教程

article/2025/10/8 10:50:44

文章目录

  • 前言
  • 一、前期的准备(很重要)
    • 1.程序的需求
    • 2.微信开发者文档
    • 3.数据库的设计
  • 二、小程序设计阶段
    • 1.选择开发方式
    • 2.云开发
      • 第一步:注册微信小程序,获取小程序的 AppID
      • 第二步、创建小程序项目
  • 第三、登录界面的设计
    • 1.登录
    • 2.注册
    • 3.优化
  • 附源码


前言

好久没更新博客了 ,最近做了一个云开发的小程序。过程之中遇到了很多问题,毕竟自己是学后端的。今天也参加了网易实习生的笔试题,感觉平时过于懒散 ,因为以后每天一更,牛客网每日一练,加油!接下来我将给大家分享自己制作小程序的步骤,避免大家踩坑。

源码附在最后

一、前期的准备(很重要)

1.程序的需求

一定要明白程序的需求是什么 ,需要做哪些方面的功能。

2.微信开发者文档

一定要学会看文档,当你是独自完成开发,看官方文档尤其重要,他会帮助你解决你所遇到的80%的问题。附官方文档连接:https://developers.weixin.qq.com/miniprogram/dev/framework/

3.数据库的设计

  1. 需求分析
  2. 概念结构设计
  3. 逻辑结构设计
  4. 数据库物理设计
  5. 数据库的实施
  6. 数据库运行与维护
    一个完整的数据库需要完成这几步,这确实很重要,我当时在做程序时,更新了三次数据库结构,就是因为一开始没有把全部的需求理清楚,所以只能一改在改。

在线画图的工具
ProcessOn画图工具: https://www.processon.com
对于css样式
可以参考菜鸟教程:https://www.runoob.com
JavaScrip
可以参考Bootstrap中文文档JavaScript :https://v3.bootcss.com/javascript
颜色参数:
可以参考中国色: http://zhongguose.com

这些在制作小程序时都会有所帮助。
好了前几准备已经完毕,那么接下来打开你的微信开发者工具。

二、小程序设计阶段

1.选择开发方式

如果你是前端人员,你可以使用云开发,这里比较方便,没有太多的后端设计部分,如果你是后端开发人员建议不使用云开发,这样比较锻炼自己,我是出于需求,要快速上线,所以选择了云开发。

2.云开发

第一步:注册微信小程序,获取小程序的 AppID

进入注册界面:https://mp.weixin.qq.com

在这里插入图片描述
选择右下方的小程序 --> 前往注册在这里插入图片描述

这里需要准备一个邮箱,一个邮箱只能申请一个小程序AppID,填写相关信息之后,进入个人页面
在这里插入图片描述
在完善小程序信息后,选择开发者设置,这里可以看到你的AppID,在项目中需要配置。
接下俩向下找到–>域名服务–>开通云开发–>同意相关文件–>之后你就可以看你的云开发环境ID,也需要在项目中配置。在获取小程序AppID以及云开发环境ID之后。打开微信开发者工具。

第二步、创建小程序项目

  1. 打开微信开发者工具,新建小程序,将获取的AppID填入。
    在这里插入图片描述
  2. 创建完之后,在点击云开发控制台窗口里的设置图标,在环境变量的标签页找到环境名称和环境 ID。
    并且在开发者工具中打开源代码文件夹 miniprogram 里的 app.js,找到如下代码:
wx.cloud.init({// 在env中此填入云开发环境 ID, 环境 ID 可打开云控制台查看env: '',traceUser: true,})
```javascript
  1. 下载 Nodejs
    这里官方文档给的比教详细:https://developers.weixin.qq.com/community/business/doc/000e26815e8de0db1ecae5a035b00d
    在这里插入图片描述

跟着官方文档把云函数部署完成后,就可以开始页面的编写了

第三、登录界面的设计

1.登录

 登录:在js逻辑层,就需要我们对输入框中的信息和云数据库中 的信息进行匹配,匹配通过才可以进行下一个界面。那么在前端,我们需要用户输入已经存入数据的正确信息。 那么获取前端的输入框的数据,将其传递给js层在前端,我们需要绑定数据,使用bindinput绑定js层函数,输入时触发前端界面代码块:
   <view  class="inpname"><text>姓名:</text><input type="text" maxlength="8" cursor-spacing="180px" placeholder="输入姓名"  model:value="{{name}}" bindinput="inpname" /></view><view class="inpnumber"><text>学号:</text><input type="number" maxlength="8" cursor-spacing="180px"   placeholder="输入学号"   model:value="{{number}}"bindinput="inpnumber"/></view>

js层代码块:
将前端获取输入信息传递给js层的data里面

data:{name:'',number:''
}inpname:function(event){this.setData({name:event.detail.value,})},inpnumber:function(event){this.setData({number:event.detail.value,})},

然后将调用云数据,将输入的信息this.data.name与数据库的信息循环遍历进行匹配,当匹配成功时,进行下一页面。

注意: 很多同学,可能直接使用event.detail.value将其直接赋值给数据库的字段,这样绕开js层时不可取的。可以去看下框架内容。

2.注册

注册是往数据库里面添加一个新的用户信息,此时,我们不仅需要对输入的信息与数据库信息进行对比,看是否已经存在,当不存在时,直接向数据库添加数据,如果存在,则进行提示已被注册,注册失败。

     const db = wx.cloud.database()const _ = db.command     //获取数据库查询及更新指令db.collection("云数据库名").where({//_openid: app.globalData.openid }).field({   //查询后需要显示的字段信息uName:true,uNumber:true,create:true}) .get()    //返回查询到的字段信息.then(res => {     //与返回的信息进行匹配if(res.data.uName == this.data.name){console.log('注册失败')}else if(res.data.uName == this.data.number){console.log('注册失败')}else{    //当信息未必注册时,我们在将前端页面获取的信息加入数据库中db.collection("云数据库名").add({data:{ uName:this.data.name,         //将获取的数据存入相应字段中uNumber:this.data.number,create:1}, success: (res) => {console.log('注册失败')},fail: (res) => {console.log('注册失败')}})         }           }).catch(err => {console.log('注册失败')})}}

3.优化

在登录和注册界面需要右提示,且当用户某一项信息未填时,我们需要提示用户填写相应信息:
为此,我们需要在js层定义一个变量;
当获取的姓名为空时,将”姓名为空“赋值给变量,并在前端页面进行显示;
同理,当学号为空,注册成功,注册失败,登录失败等提示信息在不同的条件下赋值给该变量,使其在不同的条件下,在前端显示相应的信息。
在这里插入图片描述
在这里插入图片描述

代码如下:
定义变量 在data 中定义prompt
前端页面:

	<view ><text>{{prompt}}</text></view>

js页面:

if (this.data.name== '') {this.setData({prompt: '姓名不能为空'})}else if (this.data.number == '') {this.setData({prompt: '学号不能为空'})}else {this.setData({prompt: ''})

这样对于信息的提方面就比较完善了。

附源码

大家可以自己去尝试,如果有问题欢迎和我交流!

 <view class="frame"><view  class="inpname"><text>姓名:</text><input type="text" maxlength="8" cursor-spacing="180px" placeholder="输入姓名"  model:value="{{name}}" bindinput="inpname" /></view><view class="inpnumber"><text>学号:</text><input type="number" maxlength="8" cursor-spacing="180px"   placeholder="输入学号"   model:value="{{number}}"bindinput="inpnumber"/></view></view><view class="error"><text>{{prompt}}</text></view>

js页面:

const app = getApp()Page({data:{name:'',number:'',prompt: '',avatarUrl: './user-unlogin.png',userInfo: {},hasUserInfo: false,logged: false,takeSession: false,requestResult: '',canIUseGetUserProfile: false,canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') // 如需尝试获取用户信息可改},//页面初始化onLoad:function(openid){this.setData({prompt: ''})wx.login({success (res) {if (res.code) {//发起网络请求wx.request({url: 'https://test.com/onLogin',data: {code: res.code}})} else {console.log('登录失败!' + res.errMsg)}}})},inpname:function(event){this.setData({name:event.detail.value,})},inpnumber:function(event){this.setData({number:event.detail.value,})},//登录login:function(){this.setData({prompt: ''})let i=0if (this.data.name== '') {this.setData({prompt: '姓名不能为空'})}else if (this.data.number == '') {this.setData({prompt: '学号不能为空'})}else {this.setData({prompt: ''})const db = wx.cloud.database()const _ = db.command     //获取数据库查询及更新指令db.collection("云函数名").where({}).field({uName:true,uNumber:true,create:true}).get()    .then(res => {for(i=0;i<res.data.length;i++){if(this.data.name == res.data[i].uName){if(this.data.number == res.data[i].uNumber){if(res.data[i].create == 1){this.setData({prompt: ''})wx.navigateTo({ url: '../  /' //页面跳转})}else {this.setData({prompt: ''})wx.switchTab({url: '../  /'//跳转到主界面})}   }else{this.setData({prompt: '姓名或学号输入错误1'})}}else{this.setData({prompt: '姓名或学号输入错误'})}}}).catch(err => {this.setData({prompt:''})})}},// 注册
enroll:function(){this.setData({prompt: ''})if (this.data.name == '') {this.setData({prompt: '姓名不能为空'})}else if (this.data.number == '') {this.setData({prompt: '学号不能为空'})}else {const db = wx.cloud.database()const _ = db.command     //获取数据库查询及更新指令db.collection("云函数名").where({//_openid: app.globalData.openid }).field({uName:true,uNumber:true,create:true}).get()    .then(res => {     if(res.data.uName == this.data.name){this.setData({prompt:'姓名已被注册!'})}else if(res.data.uName == this.data.number){this.setData({prompt:'学号已被注册!'})}else{this.setData({prompt:''})db.collection("云函数名").add({data:{uName:this.data.name,uNumber:this.data.number,create:1}, success: (res) => {this.setData({prompt: '注册成功,请登录!'})},fail: (res) => {this.setData({prompt: '注册失败!'})}})         }           }).catch(err => {this.setData({prompt:'注册失败,姓名或学号已被注册3'})})}}
})

后续界面持续更新中,毕竟我是后端开发的,哪里写的不对欢迎评论区指点!


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

相关文章

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

微信小程序的登录界面实现 <view class"container"><view class"wrapper"><view class"left-top-sign">LOGIN</view><view class"welcome">欢迎回来&#xff01;</view><view class"inp…

微信小程序 如何实现登录

业务流程&#xff1a; 1&#xff1a;首先需要一个按钮触发事件 2&#xff1a;调用微信小程序的登录接口wx.login&#xff0c;拿到code 3&#xff1a;调用微信小程序的获取用户信息的接口wx.getUserProfile&#xff0c;拿到用户的个人信息 4&#xff1a;拿到的个人信息调用后…

小程序登录流程

用户登录是一个系统的必备功能。而小程序的登录流程和Web端又有一些不同&#xff0c;主要是要与微信服务器进行通信验证。下面我们就来看下小程序具体的登录流程。 1.通过 wx.login() 获取到用户的code判断用户是否授权读取用户信息&#xff0c;调用wx.getUserInfo 读取用户…

微信小程序之登录页-------实例

最近在学习微信小程序&#xff0c;下面提供自己做的微信小程序登录页面&#xff0c;仅供参考。 效果图&#xff1a; 目录结构&#xff1a; 图片&#xff1a; name.png key.png 下面是代码&#xff1a; login.wxml&#xff1a; <!--pages/login/login.wxml--> <vie…

微信小程序的登录流程

基本流程&#xff1a; 1、调用 wx.login() 获取 临时登录凭证code &#xff0c;并回传到开发者服务器。 2、调用 auth.code2Session 接口&#xff08;本接口应在服务器端调用&#xff09;&#xff0c;换取 用户唯一标识 OpenID 、 用户在微信开放平台帐号下的唯一标识 UnionID&…

微信小程序实现登录页面

wxml文件&#xff1a; <view class"container"> <view class"login-icon"> <image class"login-img" src"../../img/loginLog.jpg"></image> </view> <view class"login-from"> <!…

微信小程序入门(登录页面)

1.首先前往开发者工具下载安装开发工具&#xff1a; 2.安装后微信扫码&#xff0c;并填写自己的AppID选择自己的项目目录后登录&#xff1a; 登陆后点击工具上的编译按钮&#xff0c;可以在工具的左侧模拟器界面看到这个小程序的表现&#xff0c;也可以点击预览按钮&#xff0c…

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

初步分析&#xff0c;程序一共有两个界面即&#xff1a;登录界面和注册界面。 但是注册的时候由于不同的注册方式应该有不同的界面支持&#xff0c;故在本程序中我们要写两个注册界面和一个登录界面&#xff0c;两个注册界面分别位手机注册界面和企业用户注册界面。 在微信小程…

微信小程序之登录

目录 1、登录流程时序 1.1、wx.login(Object object) 1.1.1、功能描述 1.1.2、参数 1.1.3、object.success 回调函数 1.2、auth.code2Session 1.2.1、请求地址 1.2.2、请求参数 1.2.3、返回值 2、使用微信登录 2.1、小程序端js文件 2.2、云函数端js文件 3、获取手机…

微信小程序 16 登录界面

16.1 登录界面 html <view class"container"><view class"wrapper"><view class"left-top-sign">LOGIN</view><view class"welcome">欢迎回来&#xff01;</view><view class"input-con…

微信小程序登录注册界面

微信小程序登录注册界面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;他只能给你…