小程序的逻辑层主要包含以下几个点:
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函数,场景值主要是通过这两个函数来传递。
其中只有在传递 1020、1035、1036、1037、1038、1043 这几个场景值时,才会返回referrerInfo.appId
通过这些场景值,可以方便我们统计小程序访问的来源。在后面针对某些功能做营销时,能够轻松的获得有价值的数据。