官术网_书友最值得收藏!

2.3.2 小程序邏輯(app.js)

小程序中邏輯文件分為頁面邏輯文件和小程序邏輯文件,app.js便是小程序邏輯文件,在這個文件中,我們可以通過App()函數(shù)注冊小程序生命周期函數(shù)、全局方法和全局屬性,已注冊的小程序?qū)嵗梢栽谄渌壿媽哟a中通過getApp()獲取。

1.注冊小程序

App()函數(shù)用于注冊一個小程序,參數(shù)為一個Object對象,在這個參數(shù)對象中我們可以注冊自定義方法和屬性供全局使用,就像在quick start項目中,我們利用App()注冊了用戶登錄信息。App()函數(shù)必須在app.js中注冊,且不能注冊多個,其參數(shù)屬性如下:

□onLaunch:生命周期函數(shù),監(jiān)聽小程序初始化。當(dāng)小程序初始化完成時,就會觸發(fā)onLaunch, onLoaunch事件全局只會觸發(fā)一次。

□onShow:生命周期函數(shù),監(jiān)聽小程序顯示。當(dāng)小程序啟動,或者從后臺進入前臺顯示時都會觸發(fā)onShow。

□onHide:生命周期函數(shù),監(jiān)聽小程序隱藏。當(dāng)小程序從前臺進入后臺會觸發(fā)。

□其他:開發(fā)者可以添加任意的函數(shù)或數(shù)據(jù)到Object參數(shù)中,這些屬性會被注冊到小程序?qū)ο笾校渌壿嬑募梢酝ㄟ^getApp()函數(shù)獲取已注冊的小程序?qū)嵗?/p>

關(guān)于小程序生命周期函數(shù)的執(zhí)行時機我們要特別講解一下:當(dāng)啟動一個小程序時,首先會先依次觸發(fā)onLaunch和onShow方法,然后通過app.json的pages屬性注冊相應(yīng)的頁面,最后根據(jù)默認(rèn)路徑加載首頁;當(dāng)用戶點擊左上角關(guān)閉,或者按了設(shè)備Home按鈕離開微信時,小程序并沒有直接銷毀,而是進入了后臺,這兩種情況都會觸發(fā)onHide方法;當(dāng)再次喚醒微信(針對點擊Home按鈕離開微信)或再次從微信中打開小程序時,又會從后臺進入前臺,這時會觸發(fā)onShow方法。只有當(dāng)小程序進入后臺一定時間,或者系統(tǒng)資源占用過高,才會被真正銷毀。

注冊小程序示例代碼如下:

    App( {
      onLaunch : function() {
        // 小程序初始化完成時執(zhí)行
      },
      onShow : function() {
        // 顯示小程序時執(zhí)行
      },
      onHide : function() {
        // 隱藏小程序時執(zhí)行
      },
      globalFunction : ’我是全局函數(shù)’,
      globalData : ’我是全局屬性’
    } );

2.獲取小程序?qū)嵗?/p>

注冊小程序后,在其他邏輯文件中,可以通過全局函數(shù)getApp()獲取小程序?qū)嵗纾?/p>

    var app   = getApp();
    console.log( app.globalData );

在App()注冊的函數(shù)中,我們可以使用this直接獲取App實例,而不用getApp()方法。通過getApp()獲取實例后,可以獲取注冊的屬性、調(diào)用注冊的方法,但不要私自調(diào)用生命周期函數(shù)(onLaunch、onShow、onHide),這樣會打亂項目邏輯,除非你已經(jīng)對它們很熟悉。

主站蜘蛛池模板: 新民市| 景德镇市| 石楼县| 新闻| 宝丰县| 深州市| 平潭县| 巴南区| 水城县| 永兴县| 乐至县| 广南县| 富顺县| 东莞市| 余干县| 佳木斯市| 承德县| 改则县| 雅安市| 翁源县| 洛宁县| 盐亭县| 安国市| 宜宾市| 永和县| 株洲县| 平顺县| 和平县| 晋江市| 榕江县| 南昌市| 柳州市| 同心县| 广德县| 武威市| 昌图县| 富阳市| 金门县| 岳阳市| 都兰县| 台东市|