小程序開發框架的邏輯層是由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') } })