逻辑层分析 应用程序逻辑app.js
2017-12-01 本文已影响23人
极客小寨
timg.jpg
应用程序逻辑app.js
app.js作为项目主入口文件,用于创建应用程序对象
// App函数是一个全局函数,用于创建应用程序对象
App({
//全局数据对象(可以整个应用程序共享)
globalData: { ... }, // 应用程序全局方法
method1 (p1, p2) { ... },
method2 (p1, p2) { ... }, //生命周期方法
// 应用程序启动时触发一次
onLaunch () { ... }, // 当应用程序进入前台显示状态时触发
onShow () { ... }, // 当应用程序进入后台状态时触发
onHide () { ... }
})
也就是说,当应用程序启动时会自动执行项目目录下的app.js文件。
在app.js中通过调用全局App([option])方法创建一个应用程序实例。
其中通过参数指定的一些特定的方法,会在特定的执行时机去执行,也就是说通常所说的生命周期事件方法。
属性 | 类型 | 描述 | 触发时机 |
---|---|---|---|
onLaunch | Function | 生命周期函数–监听小程序初始化 | 当小程序初始化完成时,会触发 onLaunch(全局只触发一次) |
onShow | Function | 生命周期函数–监听小程序显示 | 当小程序启动,或从后台进入前台显示,会触发 onShow |
onHide | Function | 生命周期函数–监听小程序隐藏 | 当小程序从前台进入后台,会触发 onHide |
也可以定义任意其他的对象成员(例如:方法和属性),这些成员可以在内部直接使用,或者外部通过获取app对象调用:
属性 | 类型 | 描述 |
---|---|---|
其他 | Any | 开发者可以添加任意的函数或数据到 Object 参数中,用 this 可以访问,一般用于存放业务逻辑配置,比如:API地址 |
app.js
App({
data1: '123',
data2: { message: 'hello world' },
api: {
list: 'https://github.com/zce/',
detail: 'https://github.com/zce/',
},
foo () {
return 'bar'
}
})
other.js
// getApp 也是全局函数,可以在任意地方调用,用于获取全局应用程序实例对象
var app = getApp()
console.log(app.data1)
console.log(app.data2)
console.log(app.foo())
页面逻辑[page-name].js
[page-name].js是一个页面的重要组成部分,用于创建页面对象
// 获取全局应用程序对象const app = getApp()
// Page也是一个全局函数,用来创建页面对象
Page({
// ========== 页面数据对象(可以暴露到视图中,完成数据绑定) ==========
data: { ... },
// ========== 页面方法(可以用于抽象一些公共的行为,例如加载数据,也可以用于定义事件处理函数) ==========
method1 (p1, p2) { ... },
method2 (p1, p2) { ... },
// ========== 生命周期方法 ==========
// 页面加载触发
onLoad () { ... }
...
})
在应用程序执行到当前页面时,会执行当前页面下对应的[page-name].js文件。
在[page-name].js中通过调用全局Page([option])方法创建一个页面实例。
Page([option])方法[option]参数说明
属性 | 类型 | 描述 |
---|---|---|
data | Object | 页面的初始数据 |
onLoad | Function | 生命周期函数–监听页面加载 |
onReady | Function | 生命周期函数–监听页面初次渲染完成 |
onShow | Function | 生命周期函数–监听页面显示 |
onHide | Function | 生命周期函数–监听页面隐藏 |
onUnload | Function | 生命周期函数–监听页面卸载 |
onPullDownRefreash | Function | 页面相关事件处理函数–监听用户下拉动作 |
其他 | Any | 开发者可以添加任意的函数或数据到 object 参数中,用 this 可以访问 |
如果你有更好的心得和建议,欢迎拍砖一起探讨。
欢迎加入【编程技术微分享】,加入(596888158)请留言,或联系QQ:Mr.Chen(1182929304)