微信小程序-枯木学习笔记3-登录功能

Posted 长安紫薯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序-枯木学习笔记3-登录功能相关的知识,希望对你有一定的参考价值。

一、学生登录

1、界面原型

2、功能需求

1、实现登录页面
2、请求java后台登录学生的信息,返回存储到本地浏览器缓存(h5支持)

3、涉猎的技术点

  • 背景图片,高度100%(样式)
  • 轮播图 swiper组件
  • 输入框:image图标、lable标签、bindinput事件
  • 密码输入框
  • 登录按钮:bindtap事件,wxToast消息提醒,wx.request Ajax请求java后台,返回json数据缓存到本地

二、课前资料

1、数据库学生表

2、启动java后台项目:http://localhost:8088

3、图片资源

三、最终代码

1、app.json

全局配置文件,先添加 index 首页模块,
最后添加对应的页面模块 exam、my 声明,在添加tabBar(首页、考试、我的)


  "pages":[
    "pages/index/index",
    "pages/exam/exam",
    "pages/my/my",
    "pages/home/home",
    "pages/logs/logs"
  ],
  "window":
    "backgroundTextStyle":"light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "Weixin",
    "navigationBarTextStyle":"black"
  ,
  "tabBar": 
      "backgroundColor": "#563624",
      "color": "#ffff",
      "list": [
          
            "pagePath":"pages/home/home",
            "text":"首页",
            "iconPath":"pages/images/Home.png"
          ,
          
              "pagePath": "pages/exam/exam",
              "text": "考试",
              "iconPath": "pages/images/My_exam.png"
          ,
          
              "pagePath": "pages/my/my",
              "text": "我的",
              "iconPath": "pages/images/My.png"
          
      ]
  ,
  "style": "v2",
  "sitemapLocation": "sitemap.json"


2、index.wxml

页面布局,代码量大集中在这里


<view class="container" style="background-image: url(/pages/images/mini_login_b_2.jpg);"> 
    <swiper style="height: 450rpx; width: 100%;" autoplay="true" interval="3000" indicator-dots="true" circular="true">
      <swiper-item>
        <image src="/pages/images/login_2.jpg" style="width: 100%; height:100%"></image>
      </swiper-item>
      <swiper-item>
        <image src="/pages/images/login_3.jpg" style="width: 100%; height:100%"></image>
      </swiper-item>
      <swiper-item>
        <image src="/pages/images/login_1.jpg" style="width: 100%; height:100%"></image>
      </swiper-item>
      <swiper-item>
        <image src="/pages/images/login_4.jpg" style="width: 100%; height:100%"></image>
      </swiper-item>
    </swiper>
  
  <view style="width: 100%; height: 2px; background-color: #563624; display: block;"><p style="color: #563624; font-size: 2px;">.</p></view>
  <view class="login-form"> 
  
    <!--账号-->
    <view class="inputView"> 
      <image class="nameImage" src="/pages/images/wx_user.png"></image> 
      <label class="loginLab">账号</label> 
      <input class="inputText" placeholder="请输入账号" bindinput="usernameInput" /> 
    </view> 
    
    <view class="line"></view> 
    
    <!--密码-->
    <view class="inputView"> 
      <image class="keyImage" src="/pages/images/wx_login.png"></image> 
      <label class="loginLab">密码</label> 
      <input class="inputText" password="true" placeholder="请输入密码" bindinput="passwordInput" /> 
    </view> 
    
    <!--按钮-->
    <view class="loginBtnView"> 
      <button class="loginBtn" type="primary" size="primarySize" loading="loading" plain="plain" disabled="disabled" bindtap="login">登录</button> 
    </view> 

  </view>
  
</view>

3、index.wxss

样式修饰

page
    height: 100%;


.container
    height: 100%;
    display: flex;
    flex-direction: column;
    padding: 0;
    box-sizing: border-box;


.login-img
    width: 750rpx;


.login-form
    margin-top: 40px;
    flex: auto;
    height: 100%;


.inputView
    line-height: 45px;
    border-radius: 20px;
    border:1px solid #999999;


.nameImage, .keyImage
    margin-left: 22px;
    width: 18px;
    height: 16px;


.loginLab 
    margin: 15px;
    font-size: 14px;


.inputText
    flex: block;
    float: right;
    text-align: left;
    margin-right: 22px;
    margin-top: 11px;


.line
    margin-top: 8px;


.loginBtnView
    width: 100%;
    height: auto;


.loginBtn
    width: 90%;
    margin-top: 30px;
    border-radius: 10px;


4、app.js

声明全局变量,方便统一配置java后台的链接域名和端口号

// app.js
App(
  onLaunch() 
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || []
    logs.unshift(Date.now())
    wx.setStorageSync('logs', logs)

    // 登录
    wx.login(
      success: res => 
        // 发送 res.code 到后台换取 openId, sessionKey, unionId
      
    )
  ,
  globalData: 
    userInfo: null,
    myhost: "http://localhost:8088"
  
)

5、index.js

页面输入框事件、按钮登录后请求后台并处理返回数据
涉及到微信的api较多,死记

// index.js
// 获取应用实例
const app = getApp()
const myhost = app.globalData.myhost

Page(
  data: 
   id: '',
   password: ''
  ,
  // 事件处理函数
  bindViewTap() 
    wx.navigateTo(
      url: '../logs/logs'
    )
  ,
  onLoad() 
    
  ,
  
  usernameInput: function(e)
      this.setData(
          id: e.detail.value
      )
  ,
  passwordInput: function(e)
      this.setData(
          password: e.detail.value
      )
  ,
  login: function()
      var that = this;
      if(this.data.id.length==0 || this.data.password.length ==0)
          wx.showToast(
              title: "账号或密码不能为空",
              icon: 'none',
              duration: 2000
          )
      else
          console.log('wx.request---'+myhost)
          wx.request(
              url: myhost + '/student/login',
              method: 'post',
              data:
                  id: that.data.id,
                  password: that.data.password
              ,
              success(res)
                  if(res.data == null || res.data == "")
                      wx.showToast(
                        title: '错误啦',
                        icon: 'error',
                        duration: 2000
                      )
                  else
                      wx.setStorageSync('student', res.data);
                      wx.switchTab(
                        url: '/pages/home/home',
                      )
                  
              ,
              fail(err)
                console.log("出错拉"+err)
                  console.log(err)
              
          )
      
  
)

以上是关于微信小程序-枯木学习笔记3-登录功能的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序-枯木学习笔记5-我的信息

微信小程序-枯木学习笔记5-我的信息

微信小程序-枯木学习笔记5-我的信息

微信小程序-枯木学习笔记4-欢迎页面

微信小程序-枯木学习笔记4-欢迎页面

微信小程序-枯木学习笔记4-欢迎页面