App
收藏
我的收藏app.js
文件是小程序的逻辑文件,主要负责创建全局小程序应用实例(App()
),配置生命周期,声明全局数据、调用 API 等。App()
App(params)
是框架启动小程序的入口函数,需要开发者可以通过 App(params)
的参数指定小程序的生命周期函数和其他一些自定义参数。params 参数说明
属性 | 类型 | 描述 | 触发时机 |
onLaunch | Function | 生命周期函数--监听小程序初始化 | 小程序冷启动完成时触发,全局只触发一次。 |
onShow | Function | 生命周期函数--监听小程序显示 | 当小程序启动,或从后台进入前台显示,会触发 onShow。 |
onHide | Function | 生命周期函数--监听小程序隐藏 | 当小程序从前台进入后台,会触发 onHide。 |
onError | Function | 错误监听函数 | 当小程序发生脚本错误,或者 API 调用失败时,会触发 onError 并带上错误信息。 |
onPageNotFound | Function | 页面不存在监听函数 | 当小程序要打开的页面不存在时,触发事件的回调函数。 |
onUnhandledRejection | Function | 未处理的 Promise 拒绝事件监听函数。 | 当小程序有未处理的 Promise 拒绝时触发。 |
其他 | Any | | 开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问。 |
示例代码
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); }, onPageNotFound: function (msg) { // Do something when page path is not found. }, onUnhandledRejection: function (res) { // Do something when unhandled rejection occurs. }, globalData: "I am global data", });
onLaunch 参数
onShow 参数
属性 | 类型 | 说明 |
path | String | 启动页面 |
query | Object | 启动参数 |
referrerInfo | Object | 来源信息。从另一个小程序进入小程序时返回。 |
scene | String | 场景值 |
showFrom | Number | 唤起小程序页面的来源方式,10 表示用户点击小程序入口 schema,0 表示其它方式,比如前后台切换。 |
referrerInfo 说明
字段 | 类型 | 说明 |
appId | String | 来源小程序的 AppID |
extraData | Object | 来源小程序打开当前小程序时携带的数据 |
onPageNotFound
当要打开的页面并不存在时,会回调这个监听器,并带上以下信息:
属性 | 类型 | 说明 |
path | String | 不存在页面的路径 |
query | Object | 打开不存在页面的 query |
isEntryPage | Boolean | 是否本次启动的首个页面 |
注意:此钩子只有小程序启动时才会触发。
示例代码:
App({ onPageNotFound(res) { tt.redirectTo({ url: "pages/...", }); // 重定向页面;如果是 tabbar 页面,请使用 tt.switchTab }, });
onUnhandledRejection
属性 | 类型 | 说明 |
reason | string | 拒绝原因,一般是一个 Error 对象 |
promise | Promise | 被拒绝的 Promise 对象 |
示例代码:
App({ onUnhandledRejection(res) { // Promise 异步异常处理逻辑 }, });
getApp()
如果想在 page 里面获取
App()
设置的全局变量的话,可以通过 getApp()
获取。整个小程序只有一个
App
实例,是全部页面共享的。如果想在 page 里面获取
App()
设置的全局变量的话,可以通过 getApp()
方法获取到全局唯一的 App
实例,获取 App
上的数据或调用开发者注册在 App
上的函数。示例代码:
var appInstance = getApp(); console.log(appInstance.globalData); // I am global data