【0基礎(chǔ)學(xué)習(xí)微信小程序】4.模塊化與page函數(shù)

本文為菜鳥(niǎo)窩編輯吳佳林的連載。

微信小程序入門(三)中躺盛,我們主要學(xué)習(xí)了開(kāi)發(fā)者工具介紹以及項(xiàng)目的結(jié)構(gòu)吊趾,本篇文章就主要介紹微信小程序的模塊化以及page函數(shù)。

一. 模塊化

如果學(xué)過(guò)Android的穆碎,應(yīng)該對(duì)模塊不陌生牙勘,我們通常會(huì)把一些業(yè)務(wù)功能抽取成獨(dú)立的一個(gè)模塊,然后根據(jù)業(yè)務(wù)模塊進(jìn)行分組開(kāi)發(fā)所禀。微信小程序也有模塊化的概念方面,但是微信小程序的對(duì)模塊化定義有些不同,官方文檔對(duì)模塊的定義是:

"我們可以將一些公共的代碼抽離成為一個(gè)單獨(dú)的 js 文件色徘,作為一個(gè)模塊恭金。"

也就是將公共代碼進(jìn)行封裝起來(lái),避免重復(fù)代碼褂策,可以重復(fù)調(diào)用横腿。

微信小程序的模塊化機(jī)制跟JavaScript的模塊化機(jī)制非常相似,都是通過(guò)module.exports暴露對(duì)象斤寂,然后再通過(guò)通過(guò)require來(lái)獲取對(duì)象耿焊。下面來(lái)了解一下微信小程序的模塊化開(kāi)發(fā)。

1.定義一個(gè)在頁(yè)面定義個(gè)公共方法:比如在utils包創(chuàng)建一個(gè)common.js遍搞,然后在里面定義方法

function printHello(){
    console.log("first printHello");
}

2.通過(guò) module.exports 暴露模塊接口

module.exports={
    printHello:printHello
};

3.在其它模塊通過(guò) require(path) 進(jìn)行引用模塊罗侯,然后調(diào)用方法

//引入comm.js文件
var comm=require('../../utils/common.js')
    
//在onLoad方法進(jìn)行調(diào)用
onLoad: function () {
    comm.printHello();
}
        

4.編譯后就可以在調(diào)試界面看到輸出的文字了。

好了溪猿,經(jīng)過(guò)上面幾步钩杰,我們的模塊化開(kāi)發(fā)就完成了。

二. page函數(shù)

在每個(gè)js文件里面诊县,都一個(gè)固定函數(shù) page() ,這個(gè)函數(shù)主要作用是用來(lái)注冊(cè)一個(gè)頁(yè)面榜苫,接受一個(gè) object 參數(shù),其指定頁(yè)面的初始數(shù)據(jù)翎冲、生命周期函數(shù)垂睬、事件處理函數(shù)等。示例如下:

Page({
     data:{
      
      },
      onLoad:function(options){
        // 頁(yè)面初始化 options為頁(yè)面跳轉(zhuǎn)所帶來(lái)的參數(shù)
      },
      onReady:function(){
        // 頁(yè)面渲染完成
      },
      onShow:function(){
        // 頁(yè)面顯示
      },
      onHide:function(){
            // 頁(yè)面隱藏
        },
          onUnload:function(){
            // 頁(yè)面關(guān)閉
         }
    })

    
  • 初始化數(shù)據(jù):

    data :初始化頁(yè)面數(shù)據(jù)

  • 生命周期函數(shù)

    onLoad: 監(jiān)聽(tīng)頁(yè)面加載抗悍,一個(gè)頁(yè)面只會(huì)調(diào)用一次

    onReady: 監(jiān)聽(tīng)頁(yè)面初次渲染完成驹饺,一個(gè)頁(yè)面只會(huì)調(diào)用一次,代表頁(yè)面已經(jīng)準(zhǔn)備妥當(dāng)缴渊,可以和視圖層進(jìn)行交互

    onShow: 監(jiān)聽(tīng)頁(yè)面顯示赏壹,每次打開(kāi)頁(yè)面都會(huì)調(diào)用一次

    onHide: 監(jiān)聽(tīng)頁(yè)面隱藏,頁(yè)面隱藏的時(shí)候調(diào)用

    onUnload: 監(jiān)聽(tīng)頁(yè)面卸載衔沼,頁(yè)面卸載的時(shí)候調(diào)用

  • 事件處理

    onPullDownRefresh: 監(jiān)聽(tīng)用戶下拉動(dòng)作蝌借,需要在config的window選項(xiàng)中開(kāi)啟enablePullDownRefresh

    onReachBottom: 頁(yè)面上拉觸底事件的處理函數(shù)昔瞧,需要在config的window選項(xiàng)中開(kāi)啟enablePullDownRefresh

    onShareAppMessage: 用戶點(diǎn)擊右上角分享

  • 自定義

    可以添加任意的函數(shù)或數(shù)據(jù)到 object 參數(shù)中,在頁(yè)面的函數(shù)中用 this 可以訪問(wèn)

關(guān)于data,這里要說(shuō)個(gè)兩個(gè)點(diǎn)

  1. 如何在wxml使用data里面初始化的值菩佑。

    在js文件的data參數(shù)定義相關(guān) key-value 的值后自晰,在wxml文件加上 {{key}} 就可以使用data里面的值了。

    示例代碼:

    在js文件以及在wxml定義:

Page({
     data: {
        text: 'init data',
        array: [{text: 'init data'}],
        object: {
        text: 'init data'
                }
        }......
        <view>{{text}}</view>
        <view>{{array[0].text}}</view>
        <view>{{object.text}}</view>
        
    ```
    
    
    


2. 如何在其他函數(shù)修改初始化data里面的值

    在函數(shù)里面使用setData() 稍坯,以 key酬荞,value 的形式表示將 this.data 中的 key 對(duì)應(yīng)的值改變成 value。

    示例代碼:

Page({
data: {
text: 'init data',
array: [{text: 'init data'}],
object: {
text: 'init data'
}
},
changeText: function() {
this.setData({
text: 'changed data'
})
}

    

###三.總結(jié)

看完這篇文章瞧哟,模塊化理解起來(lái)不是很難混巧,至于page函數(shù),是微信小程序中一個(gè)很關(guān)鍵的點(diǎn)勤揩,因?yàn)槔锩嫔婕傲顺跏蓟瘮?shù)據(jù)咧党,生命周期等函數(shù),特別是生命周期陨亡,我們?cè)谥蟮奈恼乱彩菚?huì)專門講生命周期這個(gè)點(diǎn)凿傅。


>更多內(nèi)容,請(qǐng)關(guān)注菜鳥(niǎo)窩(微信公眾號(hào)ID: cniao5)数苫,程序猿的在線學(xué)習(xí)平臺(tái)聪舒。 轉(zhuǎn)載請(qǐng)注明出處,本文出自菜鳥(niǎo)窩虐急,原文鏈接http://www.cniao5.com/forum/thread/3b9a922611e511e7b98900163e0230fa
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末箱残,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子止吁,更是在濱河造成了極大的恐慌被辑,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,858評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敬惦,死亡現(xiàn)場(chǎng)離奇詭異盼理,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)俄删,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門宏怔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人畴椰,你說(shuō)我怎么就攤上這事臊诊。” “怎么了斜脂?”我有些...
    開(kāi)封第一講書人閱讀 165,282評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵抓艳,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我帚戳,道長(zhǎng)玷或,這世上最難降的妖魔是什么儡首? 我笑而不...
    開(kāi)封第一講書人閱讀 58,842評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮偏友,結(jié)果婚禮上蔬胯,老公的妹妹穿的比我還像新娘。我一直安慰自己约谈,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,857評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布犁钟。 她就那樣靜靜地躺著棱诱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪涝动。 梳的紋絲不亂的頭發(fā)上迈勋,一...
    開(kāi)封第一講書人閱讀 51,679評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音醋粟,去河邊找鬼靡菇。 笑死,一個(gè)胖子當(dāng)著我的面吹牛米愿,可吹牛的內(nèi)容都是我干的厦凤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼育苟,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼较鼓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起违柏,我...
    開(kāi)封第一講書人閱讀 39,311評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤博烂,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后漱竖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體禽篱,經(jīng)...
    沈念sama閱讀 45,767評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年馍惹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了躺率。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,090評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡万矾,死狀恐怖肥照,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情勤众,我是刑警寧澤舆绎,帶...
    沈念sama閱讀 35,785評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站们颜,受9級(jí)特大地震影響吕朵,放射性物質(zhì)發(fā)生泄漏猎醇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,420評(píng)論 3 331
  • 文/蒙蒙 一努溃、第九天 我趴在偏房一處隱蔽的房頂上張望硫嘶。 院中可真熱鬧,春花似錦梧税、人聲如沸沦疾。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,988評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)哮塞。三九已至,卻和暖如春凳谦,著一層夾襖步出監(jiān)牢的瞬間忆畅,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,101評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工尸执, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留家凯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,298評(píng)論 3 372
  • 正文 我出身青樓如失,卻偏偏與公主長(zhǎng)得像绊诲,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子褪贵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,033評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容