小程序瀑布流和分包加载

2.0 页面事件 - 下拉刷新事件
下拉刷新是移动端的专有名词,指的是通过手指在屏幕上的下拉滑动操作,从而重新加载页面数据的行为。
2.1 启用下拉刷新
启用下拉刷新有两种方式:

全局开启下拉刷新
在 app.json 的 window 节点中,将 enablePullDownRefresh 设置为 true
局部开启下拉刷新
在页面的 .json 配置文件中,将 enablePullDownRefresh 设置为 true
在实际开发中,推荐使用第 2 种方式,为需要的页面单独开启下拉刷新的效果。

2.2 配置下拉刷新窗口的样式
在全局或页面的 .json 配置文件中,通过 backgroundColor 和 backgroundTextStyle 来配置下拉刷新窗口的样式,其中:

backgroundColor 用来配置下拉刷新窗口的背景颜色,仅支持16 进制的颜色值
backgroundTextStyle 用来配置下拉刷新 loading 的样式,仅支持 dark 和 light
2.3 监听页面的下拉刷新事件
在页面的 .js 文件中,通过 onPullDownRefresh() 函数即可监听当前页面的下拉刷新事件。
在触发页面的下拉刷新事件的时候,如果要把 count 的值重置为 0,示例代码如下
 

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      count: 0
    })
  },

停止下拉刷新的效果
当处理完下拉刷新后,下拉刷新的 loading 效果会一直显示,不会主动消失,所以需要手动隐藏下拉刷新的loading 效果。此时,调用 wx.stopPullDownRefresh() 可以停止当前页面的下拉刷新。示例代码如下

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.setData({
      count: 0
    })
    // 当数据重置成功之后,调用此函数,关闭下拉刷新的效果
    wx.stopPullDownRefresh()
  },

2.4 页面事件 - 上拉触底事件

  1. 上拉触底是移动端的专有名词,通过手指在屏幕上的上拉滑动操作,从而加载更多数据的行为。

2.5 监听页面的上拉触底事件

在页面的 .js 文件中,通过 onReachBottom() 函数即可监听当前页面的上拉触底事件。示例代码如下:

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    console.log('触发了上拉触底的事件');
  },

2.6 配置上拉触底距离
上拉触底距离指的是触发上拉触底事件时,滚动条距离页面底部的距离
可以在全局或页面的 .json 配置文件中,通过 onReachBottomDistance 属性来配置上拉触底的距离。
小程序默认的触底距离是 50px,在实际开发中,可以根据自己的需求修改这个默认值。

二.瀑布流
 

  onLoad: function (options) {
    //调用瀑布流布局
    this.getlist ()
  },
  //调用函数
  async getlist () {
    for(let i = 0;i<this.data.list.length;i++){
      await this.getBoxHeight ().then(res => {
        if(res == 0){
          this.data.leftList.push(this.data.list[i])
        }else{
          this.data.rightList.push(this.data.list[i])
        }
        this.setData({
          leftList: this.data.leftList,
          rightList: this.data.rightList
        })
        // console.log(this.data.leftList,this.data.rightList);
        
      })
    }
  },
  getBoxHeight () { //获取左右两边高度
    return new Promise((resolve, reject) => {
      query = wx.createSelectorQuery();
      query.select('#left').boundingClientRect();
      query.exec((res) => {
        // console.log(res);
        //这里要重新实例化对象,否则可能出现两侧高度一直相等的情况
        query = wx.createSelectorQuery();
        query.select('#right').boundingClientRect();
        query.exec((restwo) => {
          // console.log(restwo);
          if(res[0].height <= restwo[0].height){
            resolve(0)
          }else{
            resolve(1)
          }
        })
      })
      
    })
   }

三.分包加载

什么是分包

某些情况下,开发者需要将小程序划分成不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载。首次访问小程序的时候会加载主包的内容,只有在访问到分包界面的时候,才会去加载分包的内容。

为什么要使用分包

小程序单包大小限制为2M,使用分包最大可以扩展到20M(构建大型APP的时候)

优化首次加载小程序的速度,可以把不需要首次加载的内容放在分包里,可以提升小程序的使用性能(对性能要求比较高的时候)

如何使用分包

目录结构

所有分包的目录结构应该都是平级的。(分包的目录结构不能嵌套)

3.2 配置

只需要在app.json中配置即可

{ "pages":[ "pages/index", "pages/logs" ], "subpackages": [ { "root": "packageA", "pages": [ "pages/cat", "pages/dog" ] }, { "root": "packageB", "name": "pack2", "pages": [ "pages/apple", "pages/banana" ] } ] }

分包的限制

分包之间不能相互引用js

主包不能引用分包的js

独立分包

不依赖主包的分包

配置分包的时候加上independent的配置即可声明为独立分包

independent

分包预加载

在路由到某个界面的时候,可以需要加载某个分包的内容,以提升访问这个分包的速度。

猜你喜欢

转载自blog.csdn.net/m0_65849649/article/details/124331422