WeChat小程序开发:基础笔记(二)

在这里插入图片描述

博主:👍不许代码码上红
欢迎:🐋点赞、收藏、关注、评论。

API篇

● 小程序开发框架提供丰富的微信原生 API,可以方便的调起微信提供的能力,如获取用户信息,本地存储,支付功能等

通常,在小程序API中有以下几种类型:
● 事件监听api
● 同步api
● 异步api
● 异步api返回promise
● 云开发api

事件监听api
我们约定,以 on 开头的 API 用来监听某个事件是否触发,如: wx.onSocketOpen,wx.onCompassChange 等。这类 API 接受一个回调函数作为参数,当事件触发时会调用这个回调函数,并将相关数据以参数形式传入。
同步api
我们约定,以 Sync 结尾的 API 都是同步 API, 如 wx.setStorageSync,wx.getSystemInfoSync 等。此外,也有一些其他的同步 API,如 wx.createWorker,wx.getBackgroundAudioManager 等。同步 API 的执行结果可以通过函数返回值直接获取,如果执行出错会抛出异常。
异步api
大多数 API 都是异步 API,如 wx.request,wx.login 等。这类 API 接口通常都接受一个 Object 类型的参数
异步api返回promise
基础库 2.10.2 版本起,异步 API 支持 callback & promise 两种调用方式。当接口参数 Object 对象中不包含 success/fail/complete 时将默认返回 promise,否则仍按回调方式执行,无返回值。
注意事项
部分接口如 downloadFile, request, uploadFile, connectSocket, createCamera(小游戏)本身就有返回值, 它们的 promisify 需要开发者自行封装。
当没有回调参数时,异步接口返回 promise。此时若函数调用失败进入 fail 逻辑, 会报错提示 Uncaught (in promise),开发者可通过 catch 来进行捕获。
wx.onUnhandledRejection 可以监听未处理的 Promise 拒绝事件。
云开发api
开通并使用微信云开发,即可使用云开发API,在小程序端直接调用服务端的云函数。

一、getUserProfile({})

wx.getUserProfile(Object object)
(基础库 2.10.4 开始支持,低版本需做兼容处理。)

功能描述
获取用户信息。页面产生点击事件(例如 button 上 bindtap 的回调中)后才可调用,每次请求都会弹出授权窗口,用户同意后返回 userInfo。该接口用于替换 wx.getUserInfo

用户登录实现
● 代码
1、.js

Page({
    data: {
      // 是否登录
      isLogin:false,
      // 头像
      avatarUrl:'',
      // 昵称
      nickName:'',
    },
    // 登录方法
    login(){
      //获取当前微信用户信息
      wx.getUserProfile({
        // 设置获取微信信息的用途
        desc: '登录系统',
        // 成功获取用户信息的回调函数
        success:(e)=>{
          // 获取用户的头像,昵称
          let {userInfo:{avatarUrl,nickName}} = e
          // 更新页面渲染
          this.setData({
             avatarUrl:avatarUrl,
             nickName:nickName,
             isLogin:true
          })
          // 将头像和昵称保存到缓存中
          wx.setStorageSync('avatarUrl', avatarUrl)
          wx.setStorageSync('nickName', nickName)
        }
      })
    },
    //退出登录方法
    exit(){
      // 清空缓存数据
      wx.clearStorageSync()
      this.setData({
        avatarUrl:'',
        nickName:'',
        isLogin:false
      })
    },
    onLoad: function () {
      //判断缓存中有没有用户昵称,如果有,就表示该用户已经登录过
      if(wx.getStorageSync('nickName')){
        this.setData({
          isLogin:true,
          nickName:wx.getStorageSync('nickName'),
          avatarUrl:wx.getStorageSync('avatarUrl')
        })
      }
    }
  })

2、.wxml

<view class="login">
  <view wx:if="{{!isLogin}}" class="btn" bindtap="login">登录</view>
  <view wx:else class="avatar">
    <image class="img" src="{{avatarUrl}}" mode="aspectFit" bindtap="exit"></image>
    <view class="txt">{{nickName}}</view>
  </view>
</view>

3、wxss

.login{
  height: 300rpx;
  background-color: rgb(212, 38, 47);
  font-size: 28rpx;
  display: flex;
  justify-content: center;
  align-items: center;
}
.btn{
  width: 100rpx;
  height: 50rpx;
  border: 1px solid #ccc;
  text-align: center;
  line-height: 50rpx;
  background-color: white;
  border-radius: 6rpx;
}
.avatar{
  width: 140rpx;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
.avatar .img{
  width: 140rpx;
  height: 140rpx;
  border-radius: 50%;
}
.avatar .txt{
  color: #fff;
  margin-top: 10rpx;
}

二、wx.scanCode({})

wx.scanCode(Object object)
(基础库 1.0.0 开始支持,低版本需做兼容处理。)

功能描述
调起客户端扫码界面进行扫码

扫码实现
● 代码
1、.js

Page({

  /**
   * 页面的初始数据
   */
  data: {
    MGAlertView_S_H: true, 
    contentText:''
  },
  //扫一扫
  btnClick: function () {
    var that = this
    wx.scanCode({
      success(res) {
        console.log('扫描成功:', JSON.stringify(res))
        //JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 replacer 函数,则可以选择性地替换值,或者指定的 replacer 是数组,则可选择性地仅包含数组指定的属性。
        that.setData({
          contentText: JSON.stringify(res)
        })
      }
    })
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    
  }
})

2、.wxml

<view class='contentView'>
  <view class='contentText'>显示内容:{{ contentText }}</view>
  <button type="primary" bindtap="btnClick">扫一扫wx.scanCode</button>
</view>

3、.wxss

在这里插入代码片
.item{
  padding: 10rpx;
  display: flex;
  align-items: center;
}
.contentView{
  width: 100%;
  height: 100%;
}
.contentText{
  text-align: center;
  margin: 20rpx;
  margin-top: 400rpx;
  
}
button{
  margin: 20rpx;
  font-size: 30rpx;
}

三、wx.makePhoneCall

wx.makePhoneCall(Object object)
(以 Promise 风格 调用:支持;小程序插件:支持,需要小程序基础库版本不低于 1.9.6)

功能描述

拨打电话

拨打电话
● 代码
1、.js

Page({
  data: {
    //手机号码
    tel:'12345678911'
  },
  //打电话
  makePhoneCall(){
    wx.makePhoneCall({
      phoneNumber:this.data.tel,
      success:(e)=>{
        console.log(e);
      }
    })
  }
})

2、.wxml

<view class="item">
  <input class="txt" value="{{tel}}" disabled />
  <van-icon class="iconfont" class-prefix="icon" name="dianhua" bindtap="makePhoneCall" />
</view>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不许代码码上红

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值