App

更新时间 2024-07-24 02:58:49
收藏
我的收藏
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 可以访问。​

示例代码​

js
复制
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 参数​

onLaunch 参数同tt.getLaunchOptionsSync。​

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​
是否本次启动的首个页面​
注意:此钩子只有小程序启动时才会触发。
示例代码:​
js
复制
App({
onPageNotFound(res) {
tt.redirectTo({
url: "pages/...",
}); // 重定向页面;如果是 tabbar 页面,请使用 tt.switchTab
},
});

onUnhandledRejection​

小程序有未处理的 Promise 拒绝时触发。也可以使用 tt.onUnhandledRejection 绑定监听。注意事项请参考 tt.onUnhandledRejection。​
属性​
类型​
说明​
reason​
string​
拒绝原因,一般是一个 Error 对象​
promise​
Promise​
被拒绝的 Promise 对象​
示例代码:​
js
复制
App({
onUnhandledRejection(res) {
// Promise 异步异常处理逻辑
},
});

getApp()​

如果想在 page 里面获取 App() 设置的全局变量的话,可以通过 getApp() 获取。​
整个小程序只有一个 App 实例,是全部页面共享的。​
如果想在 page 里面获取 App() 设置的全局变量的话,可以通过 getApp()方法获取到全局唯一的 App 实例,获取 App 上的数据或调用开发者注册在 App 上的函数。​
示例代码:​
js
复制
var appInstance = getApp();
console.log(appInstance.globalData); // I am global data