讀古今文學網 > 微信公眾平台開發:從零基礎到ThinkPHP5高性能框架實踐 > 21.2.3 邏輯層 >

21.2.3 邏輯層

小程序開發框架的邏輯層是由JavaScript編寫的。邏輯層將數據進行處理後發送給視圖層,同時接收視圖層的事件反饋。

1.註冊程序

App函數用來註冊一個小程序。它接收一個object參數,其指定小程序的生命週期函數等。App註冊程序的定義及成員函數實現示例如下。


App({
    onLaunch: function { 
        // Do something initial when launch.
    },
    onShow: function {
        // Do something when show.
    },
    onHide: function {
        // Do something when hide.
    },
    globalData: 'I am global data'
})
  

成員函數屬性描述如表21-7所示。

表21-7 App成員函數屬性說明

2.註冊頁面

Page函數用來註冊一個頁面。它接收一個object參數,其指定頁面的初始數據、生命週期函數、事件處理函數等。Page函數的定義及成員函數實現示例如下。


// index.js
Page({
    data: {
        text: "This is page data."
    },
    onLoad: function(options) {
        // Do some initialize when page load.
    },
    onReady: function {
        // Do something when page ready.
    },
    onShow: function {
        // Do something when page show.
    },
    onHide: function {
        // Do something when page hide.
    },
    onUnload: function {
        // Do something when page close.
    },
    onPullDownRefresh: function {
        // Do something when pull down.
    },
    onReachBottom: function {
        // Do something when page reach bottom.
    },
    // Event handler.
    viewTap: function {
        this.setData({
            text: 'Set some data for updating view.'
        })
    },
    customData: {
        hi: 'MINA'
    }
})
  

成員函數屬性描述如表21-8所示。

表21-8 Page成員函數屬性說明

3.模塊化

對於一些公共的代碼,可以將其抽離成為一個單獨的JS文件,作為一個模塊。模塊只有通過module.exports或者exports才能對外暴露接口。例如下述JS文件。


// common.js
function sayHello(name) {
    console.log('Hello ${name} !')
}
function sayGoodbye(name) {
    console.log('Goodbye ${name} !')
}

module.exports.sayHello = sayHello
exports.sayGoodbye = sayGoodbye
  

在需要使用這些模塊的文件中,使用require(path)將公共代碼引入,示例代碼如下。


var common = require('common.js')
Page({
    helloMINA: function {
        common.sayHello('MINA')
    },
    goodbyeMINA: function {
        common.sayGoodbye('MINA')
    }
})