微信小程序-05-详解介绍.js 逻辑层文件
上一篇介绍了关于.json 的配置文件,本篇介绍关于.js 逻辑层文件
微信小程序-05-详解介绍.js 逻辑层文件
- 宝典官方文档:
https://developers.weixin.qq.com/miniprogram/dev/framework/MINA.html - 今天开始深度学习编程语法,虽然大部分是拷贝官方文档,代码类都是我自己敲的,希望能自己敲一遍表格里的内容,熟悉一下操作
文件目录结构
- 之前大概提高到,没有细说
- 先打开 app.js 文件
小程序 App
- 打开 app.js 文件,会看到 App({...}) 函数
- App() 函数用来注册一个小程序。接受一个 Object 参数,其指定小程序的生命周期回调等
- 【注意】:App() 必须在 app.js 中调用,必须调用且只能调用一次。不然会出现无法预期的后果
- Object参数说明:
| 属性 | 类型 | 描述 |
触发时机 |
|---|---|---|---|
| onLaunch | Function | 生命周期回调一监听小程序初始化 | 小程序初始化完成时(全局只触发一次) |
| onShow | Function | 生命周期回调一监听小程序显示 | 小程序启动,或从后台进入前台显示时 |
| onHide | Function | 生命周期回调一监听小程序隐藏 | 小程序从前台进入后台时 |
| onError | Function | 错误监听函数 | 小程序发生脚本错误,或者 api 调用失败时触发 ,会带上错误信息 |
| onPageNotFound | Function | 页面不存在监听函数 | 小程序要打开的页面不存在时触发,会带上页面信息回调该函数 |
| 其他 | Any | 开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问 |
- 前台、后台定义:当用户点击左上角关闭,或者按了设备 Home 键离开微信(也就是返回手机桌面,没有退出微信),小程序并没有直接销毁,而是进入了后台;当再次进入微信或再次打开小程序,又会从后台进入前台。需要注意的是:只有当小程序进入后台一定时间,或者系统占用资源过高,才会真正被销毁
- 关闭小程序(基础库版本1.1.0开始支持):当用户从扫一扫 ,转发等入口(场景值(下面有介绍)为1007,1008,1011,1025)进入小程序,且没有置顶小程序的情况下推出,小程序会被销毁
- 小程序运行机制在基础库版本 1.4.0 有所改变:上一条关闭逻辑在新版已不适用
- 示例代码:
//提示:当在js文件中输入app会提示函数,直接回车会直接生产4个框架,快捷
App({
/**
* 当小程序初始化完成时,会触发 onLaunch(全局只触发一次)
*/
onLaunch: function () {
},
/**
* 当小程序启动,或从后台进入前台显示,会触发 onShow
*/
onShow: function (options) {
},
/**
* 当小程序从前台进入后台,会触发 onHide
*/
onHide: function () {
},
/**
* 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息
*/
onError: function (msg) {
}
/**
* 下面是自定义内容
*/
globalData: 'I am global data'
})
详细介绍.js 文件中App({...})函数各参数
- 上面提到的 5 个参数
- onLaunch,onShow,onHide,onError,onPageNotFound
js 文件中App({...})函数参数 - onLaunch(Object)
- 小程序初始化完成时触发,全局只触发一次
- Object 参数说明:
| 字段 | 类型 |
说明 |
|---|---|---|
| path | String | 打开小程序的路径 |
| query | Object | 打开小程序的query |
| scene | Number | 打开小程序的 场景值(下面有介绍) |
| shareTicket | String | shareTicket,详见 获取更多转发信息(下面有介绍) |
| referrerInfo | Object | 当场景为由从另一个小程序或公众号或App打开时,返回此字段 |
| referrerInfo.appId | String | 来源小程序或公众号或App的 appId,详见下方说明 |
| referrerInfo.extraData | Object | 来源小程序传过来的数据,scene=1037或1038时支持 |
- 以下场景支持返回 referrerInfo.appId:
| 场景值 | 场景 | appId 信息含义 |
|---|---|---|
| 1020 | 公众号 profile 页相关小程序列表 | 来源公众号 appId |
| 1035 | 公众号自定义菜单 | 来源公众号 appId |
| 1036 | App 分享消息卡片 | 来源应用 appId |
| 1037 | 小程序打开小程序 | 来源小程序 appId |
| 1038 | 从另一个小程序返回 | 来源小程序 appId |
| 1043 | 公众号模板消息 | 来源公众号 appId |
js 文件中App({...})函数参数 - onShow(Object)
- 小程序启动,或从后台进入前台显示时触发
- Object 参数说明:
- 与上面 onLaunch 相同
js 文件中App({...})函数参数 - onHide()
- 小程序从前台进入后台时触发
js 文件中App({...})函数参数 - onError(String error)
- 小程序发生脚本错误,或者 api 调用失败时触发
- 参数说明:
| 名称 | 类型 | 说明 |
|---|---|---|
| error | String | 错误信息,包含堆栈 |
js 文件中App({...})函数参数 - onPageNotFound(Object)
- 基础库 1.9.90 开始支持,低版本需做兼容处理
- 小程序要打开的页面不存在时触发
- Object 参数说明:
| 字段 | 类型 | 说明 |
|---|---|---|
| path | String | 不存在的页面路径 |
| query | Object | 打开不存在的页面的 query |
| isEntryPage | Boolean | 是否本次启动的首个页面(例如从分享等入口进来,首个页面是开发者配置的分享页面) |
- 开发者可以在 onPageNotFound 回调中进行重定向处理,但必须在回调中同步处理,异步处理(例如 setTimeout 异步执行)无效
- 示例代码:
App({
onPageNotFound(res) {
wx.redirectTo({
url: 'pages/...'
}) // 如果是 tabbar 页面,请使用 wx.switchTab
}
})
- 注意:
- 1.如果开发者没有添加 onPageNotFound 监听,当跳转页面不存在时,将推入微信客户端原生的页面不存在提示页面
- 如果 onPageNotFound 回调中又重定向到另一个不存在的页面,将推入微信客户端原生的页面不存在提示页面,并且不再回调 onPageNotFound
getApp(Object)
- 全局的 getApp() 函数可以用来获取到小程序 App 实例
- Object 参数说明:
| 字段 | 类型 | 说明 | 最低版本 |
|---|---|---|---|
| allowDefault | Boolean | 在 App 未定义时返回默认实现。当App被调用时,默认实现中定义的属性会被覆盖合并到App中。一般用于[独立分包](https://developers.weixin.qq.com/miniprogram/dev/framework/subpackages/independent.html) | 2.2.4 |
- 示例代码:
// 自定义的.js
var appInstance = getApp()
console.log(appInstance.globalData) // I am global data
- 注意:
- 不要在定义于 App() 内的函数中调用 getApp() ,使用 this 就可以拿到 app 实例
- 通过 getApp() 获取实例之后,不要私自调用生命周期函数
场景值
- 基础库 1.1.0 开始支持,低版本需做兼容处理
- 当前支持的场景值有:
| 场景值ID | 说明 |
|---|---|
| 1001 | 发现栏小程序主入口,“最近使用”列表(基础库2.2.4版本起将包含“我的小程序”列表) |
| 1005 | 顶部搜索框的搜索结果页 |
| 1006 | 发现栏小程序主入口搜索框的搜索结果页 |
| 1007 | 单人聊天会话中的小程序消息卡片 |
| 1008 | 群聊会话中的小程序消息卡片 |
| 1011 | 扫描二维码 |
| 1012 | 长按图片识别二维码 |
| 1013 | 手机相册选取二维码 |
| 1014 | 小程序模版消息 |
| 1017 | 前往体验版的入口页 |
| 1019 | 微信钱包 |
| 1020 | 公众号 profile 页相关小程序列表 |
| 1022 | 聊天顶部置顶小程序入口 |
| 1023 | 安卓系统桌面图标 |
| 1024 | 小程序 profile 页 |
| 1025 | 扫描一维码 |
| 1026 | 附近小程序列表 |
| 1027 | 顶部搜索框搜索结果页“使用过的小程序”列表 |
| 1028 | 我的卡包 |
| 1029 | 卡券详情页 |
| 1030 | 自动化测试下打开小程序 |
| 1031 | 长按图片识别一维码 |
| 1032 | 手机相册选取一维码 |
| 1034 | 微信支付完成页 |
| 1035 | 公众号自定义菜单 |
| 1036 | App 分享消息卡片 |
| 1037 | 小程序打开小程序 |
| 1038 | 从另一个小程序返回 |
| 1039 | 摇电视 |
| 1042 | 添加好友搜索框的搜索结果页 |
| 1043 | 公众号模板消息 |
| 1044 | 带 shareTicket 的小程序消息卡片 详情 |
| 1045 | 朋友圈广告 |
| 1046 | 朋友圈广告详情页 |
| 1047 | 扫描小程序码 |
| 1048 | 长按图片识别小程序码 |
| 1049 | 手机相册选取小程序码 |
| 1052 | 卡券的适用门店列表 |
| 1053 | 搜一搜的结果页 |
| 1054 | 顶部搜索框小程序快捷入口 |
| 1056 | 音乐播放器菜单 |
| 1057 | 钱包中的银行卡详情页 |
| 1058 | 公众号文章 |
| 1059 | 体验版小程序绑定邀请页 |
| 1064 | 微信连Wi-Fi状态栏 |
| 1067 | 公众号文章广告 |
| 1068 | 附近小程序列表广告 |
| 1069 | 移动应用 |
| 1071 | 钱包中的银行卡列表页 |
| 1072 | 二维码收款页面 |
| 1073 | 客服消息列表下发的小程序消息卡片 |
| 1074 | 公众号会话下发的小程序消息卡片 |
| 1077 | 摇周边 |
| 1078 | 连Wi-Fi成功页 |
| 1079 | 微信游戏中心 |
| 1081 | 客服消息下发的文字链 |
| 1082 | 公众号会话下发的文字链 |
| 1084 | 朋友圈广告原生页 |
| 1089 | 微信聊天主界面下拉,“最近使用”栏(基础库2.2.4版本起将包含“我的小程序”栏) |
| 1090 | 长按小程序右上角菜单唤出最近使用历史 |
| 1091 | 公众号文章商品卡片 |
| 1092 | 城市服务入口 |
| 1095 | 小程序广告组件 |
| 1096 | 聊天记录 |
| 1097 | 微信支付签约页 |
| 1099 | 页面内嵌插件 |
| 1102 | 公众号 profile 页服务预览 |
| 1103 | 发现栏小程序主入口,“我的小程序”列表(基础库2.2.4版本起该场景值废弃) |
| 1104 | 微信聊天主界面下拉,“我的小程序”栏(基础库2.2.4版本起该场景值废弃) |
- 可以在 App 的 onLaunch 和 onShow 中获取上述场景值,部分场景值下还可以获取来源应用、公众号或小程序的appId
-提示:由于Android系统限制,目前还无法获取到按 Home 键退出到桌面,然后从桌面再次进小程序的场景值,对于这种情况,会保留上一次的场景值
更多文章链接:微信小程序
微信小程序-05-详解介绍.js 逻辑层文件的更多相关文章
- 微信小程序-06-详解介绍.js 逻辑层文件-注册页面
上一篇介绍的是 app.js 逻辑层文件中注册程序,对应的每个分页面都会有的 js 文件中 page() 函数注册页面 微信小程序-06-详解介绍.js 逻辑层文件-注册页面 宝典官方文档: http ...
- 微信小程序开发教程(七)逻辑层——.js详解
逻辑层,是事务逻辑处理的地方.对于小程序而言,逻辑层就是.js脚本文件的集合.逻辑层将数据进行处理后发送给视图层,同时接收视图层的事件反馈. 微信小程序开发框架的逻辑层是由JavaScript编写.在 ...
- 微信小程序组件——详解wx:if elif else的用法
背景 在学习微信小程序开发wxml页面时,需要使用if,else来判断组件是否进行展示,代码如下 <view wx:if="{{is_login==1}}">成功登录& ...
- 网页程序迁移至微信小程序web-view详解
小程序现在越来越流行,但是公司的很多项目都是用网页写的,小程序语法不兼容原生网页,使得旧有项目迁移至小程序代价很高: 小程序之前开放了webview功能,可以说是网页应用的一大福音了,但是微信的web ...
- 微信小程序开发详解——小程序,大颠覆!
微信小程序开发 联系 苏念 188.1414.7927 微信小程序系统开发 微信新功能开发 小程序开发 小程序怎么开发 app小程序开发 简化小程序开发 微信小程序定制 小程序制作 开发微信小程序 ...
- 微信小程序-框架详解(1)
配置 -app.json文件对微信小程序进行全局配置,决定页面文件的路径.窗口表现.设置网络超时时间.tab等 { "pages": [ //决定页面文件的路径 "pag ...
- 微信小程序配置详解
在之前已经通过微信公众平台的官方网站https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/devtools.html,注册好小程序并且登录成功后(这里主 ...
- 微信小程序-video详解
在小程序火热的今天,作为IT行业的一员,我也来凑了一下热闹,话不多说了,接下来看看视频上传,和跨页面获取值的相关案例吧!! 视频上传部分代码: 视频播放 随机颜色的产生: 颜色页面的选择:
- 【微信小程序】详解wx:if elif else的用法(搭配view、block)
1.搭配view <view wx:if="{{boolean==true}}"> <view class="bg_black">< ...
随机推荐
- 思科网络设备配置AAA认证
思科网络设备配置AAA认证登陆,登陆认证后直接进入#特权模式,下面以Cisco 3750G-24TS-S为例,其他设备配置完全是一样的,进入config terminal后命令如下: 前面是加2个不同 ...
- 认识CSS中标题引入icon图标
前端之HTML,CSS(十一) icon图标 icon图标的使用 获取网站的中标题icon图标,以京东为例:在域名后添加/favicon.ico Enter打开 鼠标右键,图标另存为下载icon图标, ...
- Android中自定义组合控件
Android中自定义控件的情况非常多,一般自定义控件可以分为两种:继承控件及组合控件.前者是通过继承View或其子类,重写方法实现自定义的显示及事件处理方式:后者是通过组合已有的控件,来实现结构的简 ...
- 【HADR】常见的问题
[hadrpri@oc0644314035 ~]$ db2 start hadr on db org as primary SQL1768N Unable to start HADR. Reason ...
- CentOS和Ubuntu系统下安装 HttpFS (助推Hue部署搭建)
不多说,直接上干货! 我的集群机器情况是 bigdatamaster(192.168.80.10).bigdataslave1(192.168.80.11)和bigdataslave2(192.168 ...
- 如何快速将文本中的tab更换成逗号(图文详解)
不多说,直接上干货! 现有一份数据如下. 下载日志数据并分析 到搜狗实验室下载用户查询日志 1) 介绍 搜索引擎查询日志库设计为包括约1个月(2008年6月)Sogou搜索引擎部分网页查询需求及用户点 ...
- 使用gdb进行写操作
使用gdb调试程序,读写操作是很普遍的事情.其中,读操作包括: 读取某个变量的值 读取某个内存地址里的内容 读取某个寄存器的值 对应地,写操作包括: 修改某个变量的值 修改某个内存地址里的内容 修改某 ...
- CSS3 图标神器 => content:"我是特殊符号"
基本形状 ▲ 9650 25B2 ► 9658 25BA ► 9658 25BA ▼ 9660 25BC ◄ 9668 25C4 ❤ 10084 2764 ✈ 9992 2708 ★ 9733 260 ...
- prism.js使页面代码变得漂亮
第一次接触prism.js,并把它用到了园子里. 装逼如风,常伴吾身.有了如此利器,从此院子里我的代码是"最"漂亮的! 身为程序员深刻体会代码高亮在生产过程中是多么的重要.以下便是 ...
- 关于C#委托和Lambda表达式
关于C#委托和Lambda表达式 1.C#委托和Lambda表达式结合定义方法非常方便 在定一次性方法有很好的应用 delegate void getProductNoReturn(int a); d ...