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

2024-06-06 23:48

本文主要是介绍小程序逻辑层之注册程序和场景值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

小程序学习(三)小程序逻辑层之注册程序和场景值

 之前学习了小程序的基本架构和文件的类型,然后再参照官方的Dome,对小程序也有了一些了解。下面了解一下小程序框架的逻辑层。

 

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

1、注册程序

2、场景值

3、注册页面

4、路由

5、模块化

6、API

 

一、注册程序

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

ojbect的常用参数有:

属性 类型 描述 触发时机
 onLaunch Function 生命周期函数--监听小程序初始化 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
 onShow Function 生命周期函数--监听小程序显示 当小程序启动,或从后台进入前台显示,会触发 onShow
 onHide Function 生命周期函数--监听小程序隐藏 当小程序从前台进入后台,会触发 onHide
 onError Function 错误监听函数 当小程序发生脚本错误,或者 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
var appInstance = getApp()
console.log(appInstance.globalData) // I am global data//在页面的js文件中,可以获取小程序的实例,然后通过实例对象获取定义的全局变量

 

 

需要注意几点:

  • App() 必须在 app.js 中注册,且不能注册多个。
  • 不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例。
  • 不要在 onLaunch 的时候调用 getCurrentPages(),此时 page 还没有生成。
  • 通过 getApp() 获取实例之后,不要私自调用生命周期函数。

 

二、场景值

当前支持的场景值有:

场景值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

 

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

这篇关于小程序逻辑层之注册程序和场景值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1037579

相关文章

java程序远程debug原理与配置全过程

《java程序远程debug原理与配置全过程》文章介绍了Java远程调试的JPDA体系,包含JVMTI监控JVM、JDWP传输调试命令、JDI提供调试接口,通过-Xdebug、-Xrunjdwp参数配... 目录背景组成模块间联系IBM对三个模块的详细介绍编程使用总结背景日常工作中,每个程序员都会遇到bu

vue监听属性watch的用法及使用场景详解

《vue监听属性watch的用法及使用场景详解》watch是vue中常用的监听器,它主要用于侦听数据的变化,在数据发生变化的时候执行一些操作,:本文主要介绍vue监听属性watch的用法及使用场景... 目录1. 监听属性 watch2. 常规用法3. 监听对象和route变化4. 使用场景附Watch 的

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

Java 缓存框架 Caffeine 应用场景解析

《Java缓存框架Caffeine应用场景解析》文章介绍Caffeine作为高性能Java本地缓存框架,基于W-TinyLFU算法,支持异步加载、灵活过期策略、内存安全机制及统计监控,重点解析其... 目录一、Caffeine 简介1. 框架概述1.1 Caffeine的核心优势二、Caffeine 基础2

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

Spring Security 前后端分离场景下的会话并发管理

《SpringSecurity前后端分离场景下的会话并发管理》本文介绍了在前后端分离架构下实现SpringSecurity会话并发管理的问题,传统Web开发中只需简单配置sessionManage... 目录背景分析传统 web 开发中的 sessionManagement 入口ConcurrentSess

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

C#控制台程序同步调用WebApi实现方式

《C#控制台程序同步调用WebApi实现方式》控制台程序作为Job时,需同步调用WebApi以确保获取返回结果后执行后续操作,否则会引发TaskCanceledException异常,同步处理可避免异... 目录同步调用WebApi方法Cls001类里面的写法总结控制台程序一般当作Job使用,有时候需要控制

99%的人都选错了! 路由器WiFi双频合一还是分开好的专业解析与适用场景探讨

《99%的人都选错了!路由器WiFi双频合一还是分开好的专业解析与适用场景探讨》关于双频路由器的“双频合一”与“分开使用”两种模式,用户往往存在诸多疑问,本文将从多个维度深入探讨这两种模式的优缺点,... 在如今“没有WiFi就等于与世隔绝”的时代,越来越多家庭、办公室都开始配置双频无线路由器。但你有没有注