微信小程序中使用的逻辑文件 ,本质上还是.js
文件,脚本中的很多东西进行了二次封装,本质上可以在外部调试中,查看
逻辑层(App Service)
小程序开发框架的逻辑层由 JavaScript 编写。
逻辑层将数据进行处理后发送给视图层,同时接受视图层的事件反馈。
与 原生 JavaScript
不同的是 :
- 增加
App
和Page
方法,进行程序和页面的注册。 - 增加
getApp
和getCurrentPages
方法,分别用来获取 App 实例和当前页面栈。 - 提供丰富的 API,如微信用户数据,扫一扫,支付等微信特有能力。
- 每个页面有独立的作用域,并提供模块化能力。
- 由于框架并非运行在浏览器中,所以 JavaScript 在 web 中一些能力都无法使用,如
document,window
等。 - 开发者写的所有代码最终将会打包成一份 JavaScript,并在小程序启动的时候运行,直到小程序销毁。(类似 ServiceWorker,所以逻辑层也称之为 App Service。)
以下是各类方法(函数)的使用
全局
app.js
函数
App()
App() 函数用来注册一个小程序。接受一个 object 参数(本质就是function 和 data)
,其指定小程序的生命周期函数等。
object参数说明:
属性 类型 描述 触发时机 onLaunch Function 生命周期函数–监听小程序初始化 当小程序初始化完成时,会触发 onLaunch(全局只触发一次) onShow Function 生命周期函数–监听小程序显示 当小程序启动,或从后台进入前台显示,会触发 onShow onHide Function 生命周期函数–监听小程序隐藏 当小程序从前台进入后台,会触发 onHide onError Function 错误监听函数 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息 其他 Any 开发者可以添加任意的函数或数据到 Object 参数中,内部 用 this 可以访问 ,外部用 getApp() 访问 - 前台、后台定义:
- 当用户点击左上角关闭,或者按了设备 Home 键离开微信,小程序并没有直接销毁,而是进入了后台;
当再次进入微信或再次打开小程序,又会从后台进入前台。
需要注意的是:只有当小程序进入后台一定时间,或者系统资源占用过高,才会被真正的销毁。 - 关闭小程序(基础库版本1.1.0开始支持):
- 当用户从
扫一扫
、转发
等入口(场景值为1007, 1008, 1011, 1025
)进入小程序,且没有置顶小程序的情况下退出,小程序会被销毁。
代码:
var load = {
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'
}
App(load)
app()函数中object
对象参数
onLaunch, onShow 参数
字段 类型 说明 path String 打开小程序的路径 query Object 打开小程序的query(询问) scene Number 打开小程序的场景值 shareTicket String 获取转发信息 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
获取app()
内容的方法
getApp()
此函数 为全局 函数
可以用来获取到小程序 实例。
代码(其他子文件中的js
代码)
// other.js
var appInstance = getApp()
console.log(appInstance.globalData) // 控制台输出 :I am global data
注意:
- App() 必须在
app.js
中注册,且不能注册多个。 - 不要在定义于 App() 内的函数中调用
getApp()
,使用this
就可以拿到 app 实例。 - 不要在
onLaunch
的时候调用getCurrentPages()
,此时page
还没有生成。 - 通过 getApp() 获取实例之后,不要私自调用生命周期函数。
来源:CSDN
作者:lendq
链接:https://blog.csdn.net/lendq/article/details/79466093