1.简单看了一下gio源码,通过定义App和Page两个方法,将小程序运行时的App()和Page()作为调用,然后对App和Page中的对应的事件方法进行注入自己的代码实现埋点

核心代码

Page = function () { return VdsInstrumentAgent.GrowingPage(arguments[0]) }

App = function () { return VdsInstrumentAgent.GrowingApp(arguments[0]) }

然后在方法中对App和Page调用的arguments遍历就可以了

2.问题:那么问题来了,我们是不是也可以全局注入一些我们想要的东西呢?

我就有这么一个需求:虽然又gio的埋点统计,自己服务器也要记录一些用户路径,用户设备到我们自己的数据库

初次实现:在每个page的onshow方法中加入埋点请求的方法,这个方法定义在一个公共文件中

考虑:每次新增一个页面,就要引入公共文件,调用一下方法,有点麻烦

借鉴gio实现:先初始化gio,然后拿到gio中的App方法,再简单赋值给一个变量,最后再重置App方法(切断引用),注入自己的代码,简单代码如下(此处以App实例为例子,Page实现同理),具体实现就不贴代码了,大家有兴趣可以自己实现下,就是判断onShow方法,注入一个埋点请求就可以了

const gioApp = App

App = (obj) => {

// 自己的代码

console.log(1)

// 调用gio的App方法

gioApp(obj)

}

小程序全局注入-gio原理简单分析相关推荐

  1. 微信小程序全局音频播放,实现分析

    1. 需求分析 育儿柚道小程序中有针对育儿教育提供的音频课程,主要包含读书.读文的音频内容. 1.1 功能需求 课程音频:包含课程音频的地方有三处 课程卡片,包含在 scrollview 中的试听内容 ...

  2. 两个小程序利用注入如何进行简单交互

    文章目录 前奏 找call CreateFileMapping 函数功能 函数声明 第一个参数: 第二个参数: 第三个参数: 第四个参数: 第五个参数: 第六个参数: 返回值 MapViewOfFil ...

  3. Nginx介绍及原理简单分析

    快速入门 ------------------------ 关于Nginx,我们可以到其官网 http://nginx.org/  以及WIKI http://wiki.nginx.org 进行下载和 ...

  4. 微信小程序-------全局通信方案mobx

    微信小程序-------全局通信方案mobx 微信小程序本身并没有提供类似于vue中的vuex或者React里的Redux这样的全局通信方案,只在组件中有behaviors这样的属性共享机制,用起来也 ...

  5. 微信小程序的开发与原理

    微信小程序的开发与原理 1, 小程序与普通网⻚开发的区别 ​小程序的主要开发语言是 JavaScript ,小程序的开发同普通的网⻚开发相比有很大的相似性.对于前端开发者而言,从网⻚开发迁移到小程序的 ...

  6. 微信小程序底层框架实现原理

    小册介绍 小程序(Mini Program)我们都很熟悉,它是一种不用下载安装就能使用的应用,它实现了应用"触手可及"的梦想.如今,微信已经把小程序打造成了新的开发者生态,而小程序 ...

  7. 小程序全局状态管理,在页面中获取globalData和使用globalSetData

    GitHub: https://github.com/WozHuang/mp-extend 主要目标 微信小程序官方没有提供类似vuex.redux全局状态管理的解决方案,但是在一个完整的项目中各组件 ...

  8. 微信小程序----全局状态管理 (便于全局埋点等操作)

    说明 由于我是一个有着一颗玻璃心的博主,导致在2018年后博客很少更新.原因是由于我的分享并没有解决到部分人的问题,而导致被骂了.当时这颗玻璃心就碎了,所以这两年以来很是消极,博客很少更新.这里给那些 ...

  9. 微信小程序使用that=this原理

    微信小程序使用that=this原理 示例代码1 /index.js 2 Page({ 3 4 data: { 5 toastHidden: true, 6 }, 7 8 loadData: func ...

最新文章

  1. android 手势放缩_AIR Android:放大与缩小手势
  2. 点歌服务器工作原理,KTV点歌系统方案概述
  3. 多个勒索软件团伙利用VMware的Log4Shell漏洞
  4. Shell脚本——初识
  5. c#中将对象序列化为xml(包括list)
  6. boost::hana::replicate用法的测试程序
  7. 鸟哥linux 私房菜
  8. GNU ARM汇编--(五)中断汇编之嵌套中断处理
  9. 20.QT-Qpixmap实现图片鼠标缩放,鼠标拖动示例(详解)
  10. knife4j文档请求异常_umi-request 网络请求之路
  11. Java中String、StringBuffer 、StringBuilder
  12. 倾斜摄影模型(.osgb)中心点位置的确定方法(SuperMap idesktop)
  13. access查询女教师所有的信息_access数据综合查询
  14. 微信H5音乐自动播放
  15. ubuntu 终端管理工具
  16. 计算机数据库三级刷题总结
  17. Spring MVC 406
  18. 计算机cpu风扇关闭,cpu风扇怎么关闭
  19. Hbuilder快捷键教程
  20. 计算机的音乐设置方法,让电脑开机和关机音乐更个性的设置方法(图文)

热门文章

  1. SaaS需直面中小企业全方位需求
  2. 软件工程实践作业---软件评测
  3. 第六章:Block与GCD
  4. 三星更新出现android,部分三星 A70手机更新最新安卓10底层版本出现变砖
  5. 蚂蚁集团联合Forrester发布服务网格白皮书 定义企业上云新路径
  6. 挪威大学计算机科学专业排名,挪威奥斯陆大学专业排名
  7. Linux平台:Alexa语音服务快速入门指南
  8. 一天什么时间发抖音浏览量高?5个抖音最佳发布时间段
  9. Android上传头像,图片剪裁,压缩图片
  10. Latex上下标及相对位置