关于statisticsPage.js文件 todo onShow.call(this)

参考:
https://juejin.cn/post/6844903645180329991
https://www.cnblogs.com/wangacan/p/15029251.html

有点类似iOS开发的runtime, 给所有页面的viewDidLoad添加一个统一的逻辑
statisticsPage.js文件的核心代码:

const util = require('util.js')
const statisticsPage = Page
const statistics = require('statistics.js')
var appFirst = true
// isNeedStatis: true 
// currSpm: ""

Page = function (config) {
  const { onShow} = config
  
  config.onShow = function () {
    this.statisEnter = parseInt((Date.parse(new Date()) - getApp().globalData.cValue)/1000) 
    console.log("收拾收拾statisEnter:"+this.statisEnter)
    setTimeout(() => {
      this.getPageHeight()
    }, 2000);
    if (typeof onShow === 'function') {
      onShow.call(this)
    }
}
	
	// 获取页面可滑动高度
  config.getPageHeight = function() {
    wx.createSelectorQuery().select('.root').boundingClientRect().exec((res) =>  {
      console.log(res)
      if (res[0]) {
        this.statisPageHeight = res[0].height - wx.getSystemInfoSync().windowHeight
      } else {
        this.statisPageHeight = 0
      }
    })
  }

  return statisticsPage(config)
}
export default statisticsPage

这个文件需要在app.js的第一行引入:

import Page from 'utils/statisticsPage.js'

statisticsPage的作用就是给每个页面的生命周期函数添加一些统一的逻辑,我们这里是用来做埋点,统计页面进入,离开的时间,处理场景值(推广渠道)
statisticsPage的实现思路是什么?
将原有的page函数保存到statisticsPage变量中
重写Page函数里面的onShow函数,增加获取页面高度的逻辑
最后再返回statisticsPage
onShow.call(this)
这一行还不太明白
下面是chatGpt的注释

// 引入相关文件
const util = require('util.js')
const statisticsPage = Page
const statistics = require('statistics.js')

// 定义一个变量,表示应用程序是否是首次启动
var appFirst = true

// 重写 Page 函数
Page = function (config) {
  // 从 config 中获取 onShow 函数
  const { onShow} = config

  // 在 onShow 函数中添加一个计算页面停留时间和获取页面高度的逻辑
  config.onShow = function () {
    // 计算页面停留时间
    this.statisEnter = parseInt((Date.parse(new Date()) - getApp().globalData.cValue)/1000) 
    console.log("收拾收拾statisEnter:"+this.statisEnter)

    // 延迟2秒后,调用 getPageHeight 方法获取页面高度
    setTimeout(() => {
      this.getPageHeight()
    }, 2000);

    // 执行原有的 onShow 函数
    if (typeof onShow === 'function') {
      onShow.call(this)
    }
  }

  // 定义一个方法,用于获取页面可滑动高度
  config.getPageHeight = function() {
    // 创建一个选择器,获取 .root 元素的 boundingClientRect 信息
    wx.createSelectorQuery().select('.root').boundingClientRect().exec((res) =>  {
      console.log(res)
      // 如果成功获取到 .root 元素的信息,则计算可滑动高度
      if (res[0]) {
        this.statisPageHeight = res[0].height - wx.getSystemInfoSync().windowHeight
      } else {
        // 如果未成功获取到 .root 元素的信息,则可滑动高度为 0
        this.statisPageHeight = 0
      }
    })
  }

  // 返回重写后的 config 对象
  return statisticsPage(config)
}

// 导出重写后的 Page 函数
export default statisticsPage

posted on   土匪7  阅读(15)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2019-05-14 有感触的文字
2019-05-14 UIScrollView setContentOffset: animated:YES 偶尔卡顿解决方案
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示