小程序开发攻略:数据统计与工程化

2018-09-0713:04:05APP与小程序开发Comments3,500 views字数 1618阅读模式

数据统计作为目前一种常用的分析用户行为的方式,小程序端也是必不可少的。小程序采取的曝光,点击数据埋点其实和h5原理是一样的。但是埋点作为一个和业务逻辑不相关的需求,我们如果在每一个点击事件,每一个生命周期加入各种埋点代码,则会干扰正常的业务逻辑,和使代码变的臃肿,笔者提供以下几种思路来解决数据埋点:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html

设计一个埋点sdk

小程序的代码结构是,每一个 Page 中都有一个 Page 方法,接受一个包含生命周期函数,数据的 业务逻辑对象 包装这层数据,借助小程序的底层逻辑实现页面的业务逻辑。通过这个我们可以想到思路,对Page进行一次包装,篡改它的生命周期和点击事件,混入埋点代码,不干扰业务逻辑,只要做一些简单的配置即可埋点,简单的代码实现如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html

  
  代码仅供理解思路
  page = function(params) {
    let keys = params.keys()
    keys.forEach(v => {
        if (v === 'onLoad') {
          params[v] = function(options) {
            stat()   //曝光埋点代码
            params[v].call(this, options)
          }
        }
        else if (v.includes('click')) {
          params[v] = funciton(event) { 
            let data = event.dataset.config
            stat(data)  // 点击埋点
            param[v].call(this)
          }
        }
    })
  }
复制代码

这种思路不光适用于埋点,也可以用来作全局异常处理,请求的统一处理等场景。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html

分析接口

对于特殊的一些业务,我们可以采取 接口埋点,什么叫接口埋点呢?很多情况下,我们有的api并不是多处调用的,只会在某一个特定的页面调用,通过这个思路我们可以分析出,该接口被请求,则这个行为被触发了,则完全可以通过服务端日志得出埋点数据,但是这种方式局限性较大,而且属于分析结果得出过程,可能存在误差,但可以作为一种思路了解一下。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html

微信自定义数据分析

微信本身提供的数据分析能力,微信本身提供了常规分析和自定义分析两种数据分析方式,在小程序后台配置即可。借助小程序数据助手这款小程序可以很方便的查看。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html

小程序-工程化

工程化做什么

目前的前端开发过程,工程化是必不可少的一环,那小程序工程化都需要做些什么呢,先看下目前小程序开发当中存在哪些问题需要解决:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html

  1. 不支持 css预编译器,作为一种主流的 css解决方案,不论是 less,sass,stylus 都可以提升css效率
  2. 不支持引入npm包 (这一条,从微信公开课中听闻,微信准备支持)
  3. 不支持ES7等后续的js特性,好用的async await等特性都无法使用
  4. 不支持引入外部字体文件,只支持base64
  5. 没有 eslint 等代码检查工具

方案选型

对于目前常用的工程化方案,webpack,rollup,parcel等来看,都常用与单页应用的打包和处理,而小程序天生是 “多页应用” 并且存在一些特定的配置。根据要解决的问题来看,无非是文件的编译,修改,拷贝这些处理,对于这些需求,我们想到基于流的 gulp非常的适合处理,并且相对于webpack配置多页应用更加简单。所以小程序工程化方案推荐使用 gulp文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html

具体开发思路

通过 gulp 的 task 实现:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html

  1. 实时编译 less 文件至相应目录
  2. 引入支持async,await的运行时文件
  3. 编译字体文件为base64 并生成相应css文件,方便使用
  4. 依赖分析哪些地方引用了npm包,将npm包打成一个文件,拷贝至相应目录
  5. 检查代码规范

上述实现起来其实并不是很难,但是这样的话就是一份纯粹的 gulp 构建脚本和 约定好的目录而已,每次都有一个新的小程序都来拷贝这份脚本来处理吗?显然不合适,那如何真正的实现 小程序工程化 呢? 我们可能需要一个简单的脚手架,脚手架需要支持的功能:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html

  1. 支持新建项目,创建Page,创建Component
  2. 支持内置构建脚本
  3. 支持发布小程序,也可以想办法接入Jenkins等工具做持续集成 (小程序持续集成后面会提) ...
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/xcx/4458.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/xcx/4458.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定