小程序逻辑层之注册程序和场景值

小程序的逻辑层主要包含以下几个点:

1、注册程序

2、场景值

3、注册页面

4、路由

5、模块化

6、API

一、注册程序

App() 函数用来注册一个小程序。接受一个object参数,其指定小程序的生命周期函数等。这个在上一篇中有写到,在全局的app.js 文件中。

ojbect的常用参数有:

属性 类型 描述 触发时机

onLaunchFunction 生命周期函数--监听小程序初始化 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)

onShowFunction 生命周期函数--监听小程序显示 当小程序启动,或从后台进入前台显示,会触发onShow

onHideFunction 生命周期函数--监听小程序隐藏 当小程序从前台进入后台,会触发onHide

onErrorFunction 错误监听函数 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息

 其他Any 开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问

前台、后台定义: 当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台。需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。

关闭小程序(基础库版本1.1.0开始支持): 当用户从扫一扫、转发等入口(场景值为1007, 1008, 1011, 1025)进入小程序,且没有置顶小程序的情况下退出,小程序会被销毁。

小程序运行机制在基础库版本 1.4.0 有所改变: 上一条关闭逻辑在新版本已不适用。详情

App({

  onLaunch:function(options){

    // Do something initial when launch.

  },

  onShow:function(options){

      // Do something when show.

  },

  onHide:function() {

      // Do something when hide.

  },

  onError:function(msg){

    console.log(msg)

  },

  globalData: 'I am global data'

})

这里面需要着重说明的是onLaunch 和onShow 两 个函数

onLaunch, onShow 参数:

字段类型说明

pathString打开小程序的路径

queryObject打开小程序的query

sceneNumber打开小程序的场景值

shareTicketStringshareTicket,详见获取更多转发信息

referrerInfoObject当场景为由从另一个小程序或公众号或App打开时,返回此字段

referrerInfo.appIdString来源小程序或公众号或App的 appId,详见下方说明

referrerInfo.extraDataObject来源小程序传过来的数据,scene=1037或1038时支持

这里的场景值下面会说到,在指定的场景值下,referrerInfo会传递数据

GetApp()

全局的getApp()函数可以用来获取到小程序实例

// other.js

varappInstance = getApp()

console.log(appInstance.globalData)// I am global data


//在页面的js文件中,可以获取小程序的实例,然后通过实例对象获取定义的全局变量

需要注意几点:

App() 必须在 app.js 中注册,且不能注册多个。

不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例。

不要在 onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。

通过 getApp() 获取实例之后,不要私自调用生命周期函数。

二、场景值

当前支持的场景值有:

场景值ID说明

场景值ID说明

1001发现栏小程序主入口

1005顶部搜索框的搜索结果页

1006发现栏小程序主入口搜索框的搜索结果页

1007单人聊天会话中的小程序消息卡片

1008群聊会话中的小程序消息卡片

1011扫描二维码

1012长按图片识别二维码

1013手机相册选取二维码

1014小程序模版消息

1017前往体验版的入口页

1019微信钱包

1020公众号 profile 页相关小程序列表

1022聊天顶部置顶小程序入口

1023安卓系统桌面图标

1024小程序 profile 页

1025扫描一维码

1026附近小程序列表

1027顶部搜索框搜索结果页“使用过的小程序”列表

1028我的卡包

1029卡券详情页

1031长按图片识别一维码

1032手机相册选取一维码

1034微信支付完成页

1035公众号自定义菜单

1036App 分享消息卡片

1037小程序打开小程序

1038从另一个小程序返回

1039摇电视

1042添加好友搜索框的搜索结果页

1043公众号模板消息

1044带 shareTicket 的小程序消息卡片(详情)

1047扫描小程序码

1048长按图片识别小程序码

1049手机相册选取小程序码

1052卡券的适用门店列表

1053搜一搜的结果页

1054顶部搜索框小程序快捷入口

1056音乐播放器菜单

1058公众号文章

1059体验版小程序绑定邀请页

1064微信连Wifi状态栏

1067公众号文章广告

1068附近小程序列表广告

1072二维码收款页面

1073客服消息列表下发的小程序消息卡片

1074公众号会话下发的小程序消息卡片

上面有说到 onLoauch onShow函数,场景值主要是通过这两个函数来传递。

其中只有在传递 102010351036103710381043 这几个场景值时,才会返回referrerInfo.appId

通过这些场景值,可以方便我们统计小程序访问的来源。在后面针对某些功能做营销时,能够轻松的获得有价值的数据。

你可能感兴趣的