前言
上一篇blog介绍了小程序的一些基础概念和代码构成以及主要的几个文件类型( 微信小程序从入门到精通(一) 基础知识与代码构成),那么本篇blog就继续围绕官方的简易教程以及QuickStart项目来继续研究一下小程序如何工作。
小程序能力
上次我们具体了解小程序的代码构成以及四个重要的文件类型(wxml、wxss、js和app.json),那么接下来就看看小程序的整体工作运行流程,首先从启动开始。
小程序的启动
首先来看一下小程序启动后首先会发生什么事情,引用官方文档的说明:
小程序启动之后,在 app.js 定义的 App 实例的 onLaunch 回调会被执行。
App({
onLaunch: function () {
// 小程序启动之后 触发
}
})
如上所示,这里又提到了一个文件——app.js,之前我们了解了app.json(全局配置,包含页面路径等)和app.wxss(全局样式),那么同理app.js也是一个用于描述公共逻辑代码的文件,是小程序中必须的两个主配置文件之一(app.json和app.js):
这里暂且只需要明确一个小程序的主体必定是有3个文件构成的,分别是app.js(必须)、app.json(必须)和app.wxss(可选),明确了这一点之后我们继续来看刚才官方文档中提到的App实例,也就是在上面的代码中看到的App{()}
,这里就牵扯到了另一个重要概念——注册程序,属于逻辑层的操作(App Service),官方文档中有这样一句话:
增加 App 和 Page 方法,进行程序和页面的注册。
如上所示,Page方法我们之前已经见过了,WXML 中的动态数据均来自对应 Page的data,用于注册一个页面,关于Page我们后面再说,但我们需要知道App和Page方法是逻辑层(App Service)最核心的两个方法,接下来我们首先具体研究一下App方法,引用官方文档的概述:
App() 函数用来注册一个小程序。接受一个 object 参数,其指定小程序的生命周期函数等。
如上所示,object参数我们需要注意,在上面提到的onLaunch 回调就是这个object参数之一,上面示例代码的注释中说onLaunch会在小程序启动后触发,那么它会被调用几次?依旧从官方文档中来寻找答案,我们看一下App函数的object参数的所有属性:
属性 | 类型 | 描述 | 触发时机 |
---|---|---|---|
onLaunch | Function | 生命周期函数–监听小程序初始化 | 当小程序初始化完成时,会触发 onLaunch(全局只触发一次) |
onShow | Function | 生命周期函数–监听小程序显示 | 当小程序启动,或从后台进入前台显示,会触发 onShow |
onHide | Function | 生命周期函数–监听小程序隐藏 | 当小程序从前台进入后台,会触发 onHide |
onError | Function | 错误监听函数 | 当小程序发生脚本错误,或者 api 调用失败时,会触发 onError 并带上错误信息 |
其他 | Any | 开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问 |
如上所示,可以看到onLaunch函数主要是做小程序的全局初始化工作,因为只会触发一次,类似于在android开发中的application中设置一个静态方法,在上面的表格中注意下描述列,onLaunch是一个生命周期函数,所以这里有必要再具体说明一下微信小程序中关于生命周期的一些概念,小程序的生命周期需要分为两部分来说,分别是:
- 应用的生命周期
- 页面的生命周期
这就不像在android中生命周期仅针对于界面(Activity、Fragment),在小程序的官方文档中并没有对生命周期做单独介绍,而是以注册程序和注册页面这两个标题来介绍了App()函数和Page()函数,然后分别在各自(App、Page)的object参数说明中以上面的表格的形式简单标记出了哪些是生命周期函数,关于Page后面再说,先回归正题,App()很明显有3个生命周期函数,分别是:
- onLaunch
- onShow
- onHide
如上所示,除了onLaunch仅仅会执行一次之外,onShow和onHide都会根据生命周期的变化被多次执行,注意下在onShow触发时机中提到了一个前台和后台的概念,其实很简单&#x