• 微信小程序生命周期与内置api


    微信小程序生命周期

    小程序生命周期

    onLaunch 启动 (本地存储,登录)
    onShow前台展示 开始播放与运行
    onHide后台运行 (停止播放与运行)
    onError发生错误 (监听处理错误)

    App({
        onError(){
          console.log("小程序生命周期:onError小程序发送错误")
          // 提示与重启
        },
        onHide(){
          console.log("小程序生命周期:onHide小程序后台运行")
          // 停止播放
        },
        onShow(){
          console.log("小程序生命周期:onShow小程序前台展示")
          // 恢复播放
        },
        onLaunch() {
          console.log("小程序生命周期:onLaunch页面启动")
          // 本地存储,系统信息获取,登录获取code
      
          // 展示本地存储能力
          const logs = wx.getStorageSync('logs') || []
          logs.unshift(Date.now())
          wx.setStorageSync('logs', logs)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    页面的生命周期

    生命周期

    onLoad 加载完毕 (获取页面传参,初始化,网络请求,本地出错)
    onReady首次渲染完毕 (获取节点)
    onShow前台显示
    onHIde后台运行
    onUnload 页面被卸载

    固定回调函数

    • onPullDownRefresh 下拉属性
      在json中配置 enablePullDownRefresh
      停止下拉刷新 wx.stopPullDownRefresh()
    • onReachBottom 上拉触底
    • onShareAppMessage 右上角分享
    • onShareTimeline 分享到朋友圈
    • onPageScroll 页面滚动
      e.scrollTop 页面滚动的距离
      wx.pageScrollTo({ duration: 600, scrollTop:0, }) //将页面滚动到指定的位置 //也可以指定滚动到指定的元素
      onTabItemTap 页面底部栏被点击

    节点信息

    const query = wx.createSelectorQuery() //创建一个选择器
    query.select('.h1').boundingClientRect() //选中h1节点 获取他的边界
    query.selectAll('.h1').boundingClientRect() //选中所有h1节点 获取他的边界
    query.selectViewport().scrollOffset(); //获取窗口的位置信息
    query.exec(function(res){}) //执行查询操作放回结果

    onReady() {
         console.log("页面生命周期:onReady第一次渲染完成")
         // 1. 操作节点(没有window,document.getxxx,document.getElement)
         // 创建一个选中器
         const query = wx.createSelectorQuery()
         // 选中h1节点 获取他的边界
         query.select('.h1').boundingClientRect()
         // 获取窗口的位置信息
         query.selectViewport().scrollOffset();
      
         // 执行命令返回结果
         query.exec(function(res){
           // 获取元素的边界信息,bottom,top ,left,right,height,width
           console.log(res[0]);
           // 窗口信息 scrollHeight  scrollLeft: 0  scrollTop: 0  scrollWidth: 320
           console.log(res[1]);
           
         })
         // create创建Selector选择器,query查询;bounding边界Client客户界面Rect区域
         // Viewport视口,scrollOffset滚动与偏移
       },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    button的开放能力

    • open-type:
      share 触发分享
      getPhoneNumber 获取用户的手机号
      getUserInfo 获取用户信息
      chooseAvatar 获取用户的头像
      都会弹框需要授权

    微信小程序内置api

    • 界面
    • 网络请求
    • 用户头像
    • 登录
    • 图片与文件
    • 系统信息
    • 网络

    wx.getSystemInfoSync() 同步获取系统信息

    onLoad(options) {
          var sys = wx.getSystemInfoSync();
          console.log(sys);}
    
    • 1
    • 2
    • 3

    下载与上传图片文件

    <view class="title">网络view>
    <view>wx.request()网络请求view>
    <view>wx.downloadFile 下载文件view>
    <view>wx.saveImageToPhotosAlbum 保存图片到相册view>
    <view>wx.uploadFile 下载view>
    <view>wx.chooseMedia 选择图片或者视频view>
    <view> wx.chooseImage 从相册选择图片view>
    <image src="{{pic}}" mode="aspectFill" bindtap="downPic">image>
    <button type="warn" bindtap="upImg">上传图片button>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
           data: {
          pic:"https://img1.baidu.com/it/u=3009731526,373851691&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500"
        },
        //上传图片
        upImg(){
            var that  =  this;
            // 选择图片
            // wx.chooseImage({
            // 选择媒体
            wx.chooseMedia({
              count: 1, //媒体数量
              success(res){
                console.log(res)
                // 获取选择的第0个图片临时地址
                var tempFile = res.tempFiles[0].tempFilePath;
                wx.uploadFile({
                  filePath: tempFile,
                  name: 'file',
                  url: 'http://dida100.com/ajax/file.php',
                  success:res=>{
                    console.log(res);
                    // 转换为js对象
                    var data = JSON.parse(res.data);
                    // 更新图片信息
                    that.setData({pic:"http://dida100.com"+data.pic})
                  }
                })
              }
            })
          },
          //下载图片
          downPic(){
            wx.downloadFile({
              url: this.data.pic,
              success(res){
                console.log(res);
                // 把临时文件保存到相册(需要用户授权)
                wx.saveImageToPhotosAlbum({
                  filePath: res.tempFilePath,
                  success(){
                    // 提示保存成功
                    wx.showToast({
                      title: '下载图片成功',
                      icon:"none"
                    })
                  }
                })
              }
            })
          },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50

    模态框与提示信息

    <view class="title">界面view>
    <view>wx.showModal 模特框view>
    <view>wx.showToast 提示view>
    <view>wx.showLoading 加载提示view>
    <view>wx.setNavigationBarTitle 标题栏文本view>
    <view>wx.setNavigationBarColor 设置导航栏的颜色view>
    <button size="mini" bindtap="showTip">提示button>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
     showTip(){
          wx.setNavigationBarTitle({
            title: 'api讲解',
          })
          wx.setNavigationBarColor({
            frontColor: '#ffffff',
            backgroundColor: '#ff0000',
            animation: {
              duration: 400,
              timingFunc: 'easeIn'
            }
          })
    
          wx.showLoading({
            title: '加载中...',
          })
          setTimeout(()=>{
            wx.hideLoading();
          },2000)
        },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    获取用户信息

    <view class="title">开放能力view>
    <view>wx.getUserProfile 获取用户信息view>
    <view wx:if="{{userInfo.nickName}}">
      <image style="width: 100px; height: 100px;" src="{{userInfo.avatarUrl}}">image>
      <view>{{userInfo.nickName}}view>
    view> 
    <button wx:else size="mini" bindtap="getUser">
    获取用户信息
    button>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
     onLoad(options) {
          var sys = wx.getSystemInfoSync();
          console.log(sys);
          // 本地获取用户信息
          var userInfo = wx.getStorageSync('userInfo')||{};
          // 更新用户信息
          this.setData({userInfo})
        },
        getUser(){
          var that = this;
          wx.getUserProfile({
            desc: '需要获取您的昵称',
            success:res=>{
              console.log(res);
              // 更新本地用户信息
              that.setData({"userInfo":res.userInfo})
              // 存储用户信息到本地
              wx.setStorageSync('userInfo', res.userInfo)
            }
          })
        },
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    触发分享

     
     <button size="mini" type="primary" open-type="share">分享给朋友赚现金button>
    
    • 1
    • 2
      data: {
          showTop:false,
        },
    onShareAppMessage() {
            // 默认以当前页面的截图
            // 实际中,可以网络请求一个数组,从数组随机的获取一组参数
            return {
              title:"送你50元现金红包",
              path:"/pages/yidian/yidian",
              imageUrl:"https://img1.baidu.com/it/u=2192736850,1088345825&fm=253&fmt=auto&app=138&f=JPEG?w=375&h=500"
            }
        },
        // 分享到朋友圈
        onShareTimeline(){
          // 不返回也是有个默认的当前页面效果的
          return {
            title:"给,这是你喜欢的",
            query:"?name=mumu&age=18",
            imageUrl:"https://img1.baidu.com/it/u=2192736850,1088345825&fm=253&fmt=auto&app=138&f=JPEG?w=375&h=500"
          }
        },
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    回顶效果

     <view wx:for="{{100}}" wx:key="item">{{item+1}}view>
     <view class="top" wx:if="{{showTop}}" bindtap="goTop">topview>
    
    • 1
    • 2
    // 当页面滚动时候
        onPageScroll(e){
          //  当页面的滚动距离大于100时候显示回到顶部
          if(e.scrollTop>100){
            this.setData({showTop:true})
          }else{
            // 否则隐藏回到顶部
            this.setData({showTop:false})
          }
        },
        // 回到顶部
        goTop(){
          // 页面滚动到0的位置,时间为600毫秒
          wx.pageScrollTo({
            duration: 600,
            scrollTop:0,
          })
        }
      })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
  • 相关阅读:
    学习MySQL-第六章
    美发店微信小程序怎么制作
    NumPy 分割与搜索数组详解
    Mybatis批量插入数据的两种方式
    前端包管理器的工具,npm和Yarn以及pnpm是最常用的
    第 125 场 LeetCode 双周赛题解
    CDH6在安装agent时,提示安装失败无法接收 Agent发出的检测信号
    【无标题】初识TCP,实验加抓包带你理解为什么需要三次握手、四次挥手
    使用 Python 交互式方法预测股票价格变动概率
    扎心了,Java面试不准备真的只有被怼的份儿了
  • 原文地址:https://blog.csdn.net/m0_59642141/article/details/127852503