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

article/2025/10/8 10:56:18

初步分析,程序一共有两个界面即:登录界面和注册界面。

但是注册的时候由于不同的注册方式应该有不同的界面支持,故在本程序中我们要写两个注册界面和一个登录界面,两个注册界面分别位手机注册界面和企业用户注册界面。 在微信小程序中,每一个界面的文件夹下有4个文件,如图:

login为登录界面各文件存储的文件夹,其下有四个文件,从其后缀名可以看出其与web开发中的各种类型文件的相似之处。

  • wxml文件主要表示界面上有那些东西;
  • wxss文件则对wxml中的文件的样式,颜色等进行修饰;
  • js文件则主要是负责一些业务逻辑的处理,(可以粗浅的理解为存储定义一些数据和函数);
  • json文件则是记录一些页面的设置。 了解了这些后,我们便可以开始着手代码的编写了。

首先,新建一个项目。项目整体结构如图:

在app.json中添加我们要完成的页面,删除我们不需要的页面。修改后的app.json如下:

{
  "pages":[
    "pages/login/login",
    "pages/mobile/mobile",
    "pages/company/company"
  ],
  "window":{
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor""#fff",
    "navigationBarTitleText""Weixin",
    "navigationBarTextStyle":"black"
  },
  "style""v2",
  "sitemapLocation""sitemap.json"
}

如上,pages中的内容即为最终成品中所含的页面。本小程序含有login,mobile和company三个页面,用来实现登录,手机注册和企业用户注册三个功能。编辑完成app.json文件后按ctrl+s保存后,会自动生成各个页面的文件夹及文件夹下各个文件如图:

接下来我们只需要逐个完成其中的功能和页面就好了。

  1. 登录界面 login.wxml
<view class="content">
  <view class="account">
    <view class="title">account</view>
    <view class="number"><input bindinput="accountInput" placeholder="username/email/phone" placeholder-style="color:#999999;"/></view>
  </view>
  <view class="hr"></view>
  <view class="account">
    <view class="title">passwd</view>
    <view class="number"><input bindiblur="pwdBlur" placeholder="please input password" password placeholder-style="color:#999999;"/></view>
  </view>
  <view class="hr"></view>
  <button class="btn" disabled="{{disabled}}" type="{{btnstate}}" bindtap="login">login</button>
  <view class="operate">
      <view><navigator url="../mobile/mobile">手机快速注册</navigator></view>
      <view><navigator url="../company/company">企业用户注册</navigator></view>
      <view>找回密码</view>
  </view>
</view>

login.wxss:

/* pages/login/login.wxss */
.content{
  margin-top40px;
}
.account{
  display: flex;
  flex-direction: row;
  padding-left20px;
  padding-top20px;
  padding-bottom10px;
  width:90%;
}
.title{
  margin-right30px;
  font-weight: bold;
}
.hr{
  border:1px solid #cccccc;
  opacity0.2;
  width:90%;
  margin:0 auto;
}
.btn{
  width90%;
  margin-top40px;
  color:grey;
}
.operate{
  display: flex;
  flex-direction: row;
}
.operate view{
  margin:0 auto;
  margin-top40px;
  font-size 14px;
  color:#333333;
}

login.js

// pages/login/login.js
Page({

  /**
   * 页面的初始数据
   */

  data: {
    disabled:true,
    btnstate:"default",
    account:"",
    password:""
  },

  accountInput:function(e){
    var content = e.detail.value;
    if(content!=''){
      this.setData({disabled:false,btnstate:"primary",account:content});
    }else{
      this.setData({disabled:true,btnstate:"default"});
    }
  },
  pwdBlur:function(e){
    var password= e.detail.value;
    if(password!=''){
      this.setData({password:passwd});
    }
  }
})

最总,表现结果如图:

2.手机注册界面

mobile.wxml:

<view class="content">
   <view class="hr"></view>
   <view class="numbg">
     <view>+86</view>
     <view><input placeholder="please input phone number" maxlength="11" bindblur="mobileblur"/></view>
   </view>
   <view class="xieyi">
     <icon type="success" color="red" size="18"></icon>
     <text class="agree">同意</text>
     <text class="option">xx用户注册协议</text>
   </view>
</view>

mobile.wxss:

.content{
  width100%;
  height600px;
  background-color#f2f2f2;
}
.hr{
  padding-top20px;
}
.numbg{
  border:1px silid grey;
  width:90%;
  margin:0 auto;
  background: white;
  border-radius5px;
  display: flex;
  flex-direction: row;
  height50px;
}
.numbg view{
  margin-left20px;
  margin-top14px;
}
.xieyi{
  margin-top15px;
  margin-left15px;
}
.agree{
  font-size:13px;
  margin-left5px;
  color#666666;
}
.option{
  font-size13px;
  color#000000;
  font-weight: bold;
}
.btn{
  width90%;
  margin-top30px;
}

mobile.js

// pages/mobile/mobile.js
Page({

  /**
   * 页面的初始数据
   */

  data: {
    disabled:true,
    btnstate:"default",
    mobile:""
  },
  mobileblur:function(e){
    var content = e.detail.value;
    if(content!=''){
      this.setData({
        disabled:false,
        btnstate:"primary",
        mobile:content
      });
    }else{
      this.setData({
        disabled:true,
        btnstate:"default",
        mobile:""
      });
    }
  }
})

最终,表现结果如图:

3.企业用户注册界面

company.wxml

<form bindsubmit="formSubmit" bindreset="formReset">
  <view class="content">
    <view class="hr"></view>
    <view class="item">
      <input type="text" name="loginName" placeholder="请设置4-20位用户名" placeholder-class="holder" bindblur="accountblur"/>
    </view>
    <view class="item flex">
      <input type="text" password name="password" placeholder="请设置6-20位登录密码" placeholder-class="holder"/>
      <switch type="switch" name="switch"/>
    </view>
    <view class="item">
      <input type = "text" name="company" placeholder="请填写工商局注册名称" placeholder-class="holder"/>
    </view>
    <view class="item">
      <input type="text" name="userName" placeholder="联系人姓名" placeholder-class="holder"/>
    </view>
    <view class="mobileInfo">
      <view class="mobile">
        <input type="text" name="mobile" placeholder="请输入手机号" placeholder-class="holder"/>
      </view>
      <view class="code">发送验证码</view>
    </view>
    <view class="item">
      <input type="text" name="code" placeholder="短信验证码" placeholder-class="holder"/>
    </view>
    <button class="btn" disabled="{{disabled}}" type="{{btnstate}}" form-type="submit">注册</button>
    <view class="xieyi">
      <text class="agree">注册则视为同意</text><text class="opinion">《xx用户注册协议》</text>
    </view>
  </view>
</form>

company.wxss

.content{
  width100%;
  height700px;
  background-color#f2f2f2;
}
.hr{
  padding-top40px;
}
.item{
  margin:0 auto;
  border:1px solid #cccccc;
  height:40px;
  width:90%;
  border-radius:3px;
  background-color#ffffff;
  margin-bottom15px;
}
.item input{
  height:40px;
  line-height40px;
  margin-left10px;
}
.holder{
  font-size14px;
  color:#999999;
}
.flex{
  display:flex;
  flex-direction: row;
}
.flex input{
  width:300px;
}
.item switch{
  margin-top5px;
  margin-right5px;
}
.mobileInfo{
  display:flex;
  flex-direction: row;
}
.mobile{
  margin:0 auto;
  border:1px solid #cccccc;
  height:40px;
  width:50%;
  border-radius3px;
  background-color#ffffff;
  margin-bottom15px;
  display: flex;
  flex-direction: row;
  margin-left5%;
}
.mobile input{
  margin-top8px;
  margin-left10px;
}
.code{
  border1px solid #cccccc;
  height40px;
  width:35%;
  background-color#EFEEEC;
  border-radius:3px;
  text-align: center;
  margin-left10px;
  line-height40px;
  color#999999;
  font-size15px;
  margin-bottom15px;
  margin-right5%;
}
.btn{
  width90%;
  color#999999;
  margin-top40px;
}
.xieyi{
  margin-top15px;
  margin-left:15px;
  font-size13px;
}
.agree{
  margin-left5px;
  columns#666666;
}
.opinion{
  color:red;
  font-weight: bold;
  text-decoration: underline;
}

company.js

// pages/company/company.js
Page({

  /**
   * 页面的初始数据
   */

  data: {
    disabled:true,
    btnstate:"default"
  },
  accountblur:function(e){
    var content = e.detail.value;
    if(content!=""){
      this.setData({disabled:false,btnstate:"primary"});
    }else{
      this.setData({disabled:true,btnstate:"default"});
    }
  },
  formSubmit:function(e){
    console.log(e);
    var user = new Object();
    user.account = e.detail.value.loginName;
    user.password = e.detail.value.password;
    user.company = e.detail.value.company;
    user.userName = e.detail.value.userName;
    usesr.code = e.detail.value.code;
    user.mobile = e.detail.value.mobile;
    user.switch = e.detail.value.switch;
    wx.setStorageSync('user', user);
    wx.showToast({
      title'注册成功',
      inco:"success",
      duration:1000,
      success:function(){
        wx.navigateTo({
          url'../login/login'
        })
      }
    })
  }
})

最终,表现结果如图:


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

相关文章

微信小程序之登录

目录 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;他只能给你…

【接口压测】

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