應用程序邏輯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({ data1: '123', data2: { message: 'hello world' }, api: { list: 'https://github.com/zce/', detail: 'https://github.com/zce/', }, foo () { return 'bar' } })
// 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)