承接上一篇继续写的。。。
下面,得学习app.js,也就是小程序的逻辑文件。在这个文件中,我们可以通过App()函数注册小程序生命周期函数,全局方法和全局属性,已注册的小程序实例可以在其他逻辑层代码中通过getApp()方法获取。
App()函数用于注册一个小程序,参数为一个Object对象,在这个参数对象中,我们可以注册自定义方法和属性,供全局使用。就像quick start项目中,我们利用App()注册了用户登录信息。App()函数必须在app.js中注册,切不能注册多次。
其参数属性如下:
onLaunch:生命周期函数,监听小程序初始化。当小程序初始化完成时,就会触发onLaunch,onLaunch事件全局只会触发一次。
onShow:生命周期函数,监听小程序显示。当小程序启动,或者从后台进入前台显示时都会触发onShow。
onHide:生命周期函数,监听小程序隐藏,当小程序从前台进入后台会触发。
其他:开发者可以添加任意的函数或数据到Object参数中,这些属性或函数会被注册到小程序对象中,其他逻辑文件可以通过getApp()来获取已注册的小程序实例。
小程序生命周期函数的执行时机必须要了解的:当启动一个小程序时,首先会依次触发onLaunch和onShow方法,然后通过app.json的pages属性注册相应的页面,最后根据默认路径加载首页;当用户点击左上角关闭或者按了设备的Home按钮离开微信时,小程序并没有直接销毁,而是进入后台,这两种情况都会触发onHide方法,当再次点开微信(针对点击Home离开小程序)或再次从微信中打开小程序,又会从后台进入前台,这时就会触发onShow,只有当小程序进入后台一定时间或者系统资源占用过高,才会被真正销毁。
注册小程序的示例:
App({
onLaunch:function(){
//小程序初始化完成时执行
},
onShow:function(){
//显示小程序
},
onHide:function(){
//隐藏小程序
},
globalFunction:'全局函数',
globalData:'全局属性'
})
其它页面的逻辑文件通过全局函数getApp()获取小程序实例
我们可以在console调试中写上
var app=getApp();
console.log(app.globalData);
这样就可以显示全局属性
在App()注册的函数中,我们可以直接用this直接获取App实例,而不用getApp()方法。但要注意的是,不要随意调用生命周期函数(onLaunch,onShow,onHide),这会打乱项目逻辑,除非你非常熟悉它们的关系。
全局样式(app.wxss)
app.wxss是全局样式表,对项目中每个页面都有效,可将一些系统级别的统一样式写入这个文件,页面渲染时,框架页(也就是其它页面)的.wxss文件会覆盖全局样式(app.wxss)中相同的选择器样式。wxss是小程序基于css拓展的一套样式语音,它实现了CSS大部分规则。
到此,小程序框架主体的3个文件就说完了(app.json,app.js,app.wxss)