學(xué)習(xí)微信小程序(2)——要點(diǎn)梳理

邏輯層

一、關(guān)于目錄結(jié)構(gòu)和配置文檔;

二、App() 在 app.js 中注冊(cè)文檔;

App({
  onLaunch: function(options) {
    // 生命周期函數(shù)--監(jiān)聽小程序初始化 
    // 當(dāng)小程序初始化完成時(shí),會(huì)觸發(fā) onLaunch(全局只觸發(fā)一次)
  },
  onShow: function(options) {
      // 生命周期函數(shù)--監(jiān)聽小程序顯示    
      // 當(dāng)小程序啟動(dòng),或從后臺(tái)進(jìn)入前臺(tái)顯示,會(huì)觸發(fā) onShow
  },
  onHide: function() {
      // 生命周期函數(shù)--監(jiān)聽小程序隱藏    
      // 當(dāng)小程序從前臺(tái)進(jìn)入后臺(tái),會(huì)觸發(fā) onHide
  },
  onError: function(msg) {
      // 錯(cuò)誤監(jiān)聽函數(shù) 
      // 當(dāng)小程序發(fā)生腳本錯(cuò)誤,或者 api 調(diào)用失敗時(shí),會(huì)觸發(fā) onError 并帶上錯(cuò)誤信息
    console.log(msg)
  },
  onPageNotFound(res) {
    // 頁面不存在監(jiān)聽函數(shù)    
    // 當(dāng)小程序出現(xiàn)要打開的頁面不存在的情況,會(huì)帶上頁面信息回調(diào)該函數(shù)
    wx.redirectTo({
      url: 'pages/...'
    }) // 如果是 tabbar 頁面,請(qǐng)使用 wx.switchTab
  },
  globalData: 'I am global data'
})

前臺(tái)、后臺(tái)定義: 當(dāng)用戶點(diǎn)擊左上角關(guān)閉,或者按了設(shè)備 Home 鍵離開微信,小程序并沒有直接銷毀,而是進(jìn)入了后臺(tái);當(dāng)再次進(jìn)入微信或再次打開小程序,又會(huì)從后臺(tái)進(jìn)入前臺(tái)。需要注意的是:只有當(dāng)小程序進(jìn)入后臺(tái)一定時(shí)間,或者系統(tǒng)資源占用過高,才會(huì)被真正的銷毀。

onLaunch, onShow 參數(shù)
image.png
具體場(chǎng)景值:傳送門
getApp()

全局的 getApp() 函數(shù)可以用來獲取到小程序?qū)嵗?/p>

// other.js
var appInstance = getApp()
console.log(appInstance.globalData) // I am global data

注意:
App() 必須在 app.js 中注冊(cè),且不能注冊(cè)多個(gè)。
不要在定義于 App() 內(nèi)的函數(shù)中調(diào)用 getApp() ,使用 this 就可以拿到 app 實(shí)例。
不要在 onLaunch 的時(shí)候調(diào)用 getCurrentPages(),此時(shí) page 還沒有生成。
通過 getApp() 獲取實(shí)例之后,不要私自調(diào)用生命周期函數(shù)。

三、頁面注冊(cè)page()文檔;

生命周期函數(shù)
Page({
  data: {

    getData: app.data

  },
  onLoad: function (options) {
    // 頁面初始化 options為頁面跳轉(zhuǎn)所帶來的參數(shù)
  },
  onReady: function () {
    // 頁面渲染完成
  },
  onShow: function () {
    // 頁面顯示
  },
  onHide: function () {
    // 頁面隱藏
  },
  onUnload: function () {
    // 頁面關(guān)閉
  },
  onPullDownRefresh:function(){
    //下拉操作

  },
   onReachBottom: function() {
    //上拉操作
  },
  onShareAppMessage: function () {
   // 右上角分享.
  }

})

四、路由文檔;

1、getCurrentPages()

getCurrentPages() 函數(shù)用于獲取當(dāng)前頁面棧的實(shí)例,以數(shù)組形式按棧的順序給出,第一個(gè)元素為首頁,最后一個(gè)元素為當(dāng)前頁面。

2、Tips:參考

navigateTo, redirectTo 只能打開非 tabBar 頁面。
switchTab 只能打開 tabBar 頁面。
reLaunch 可以打開任意頁面。
頁面底部的 tabBar 由頁面決定,即只要是定義為 tabBar 的頁面,底部都有 tabBar。
調(diào)用頁面路由帶的參數(shù)可以在目標(biāo)頁面的onLoad中獲取。

視圖層

一、WXML

1、數(shù)據(jù)綁定:文檔

(1)、基本用法雙括號(hào):

<view> {{ message }} </view>
Page({
  data: {
    message: 'Hello MINA!'
  }
})

(2)、
組件屬性(需要在雙引號(hào)之內(nèi))

<view id="item-{{id}}"> </view>
Page({
  data: {
    id: 0
  }
})

控制屬性(需要在雙引號(hào)之內(nèi))

<view wx:if="{{condition}}"> </view>
Page({
  data: {
    condition: true
  }
})

關(guān)鍵字(需要在雙引號(hào)之內(nèi))
true:boolean 類型的 true,代表真值。
false: boolean 類型的 false,代表假值。

<checkbox checked="{{false}}"> </checkbox>

特別注意:不要直接寫 checked="false",其計(jì)算結(jié)果是一個(gè)字符串,轉(zhuǎn)成 boolean 類型后代表真值。
(3)、可在花括號(hào)運(yùn)算
(4)、可以在 Mustache 內(nèi)直接進(jìn)行組合,構(gòu)成新的對(duì)象或者數(shù)組。

數(shù)組

<view wx:for="{{[zero, 1, 2, 3, 4]}}"> {{item}} </view>
Page({
  data: {
    zero: 0
  }
})

最終組合成數(shù)組[0, 1, 2, 3, 4]。

對(duì)象

<template is="objectCombine" data="{{for: a, bar: b}}"></template>
Page({
  data: {
    a: 1,
    b: 2
  }
})

最終組合成的對(duì)象是 {for: 1, bar: 2}

也可以用擴(kuò)展運(yùn)算符 ... 來將一個(gè)對(duì)象展開

<template is="objectCombine" data="{{...obj1, ...obj2, e: 5}}"></template>
Page({
  data: {
    obj1: {
      a: 1,
      b: 2
    },
    obj2: {
      c: 3,
      d: 4
    }
  }
})

最終組合成的對(duì)象是 {a: 1, b: 2, c: 3, d: 4, e: 5}。

如果對(duì)象的 key 和 value 相同,也可以間接地表達(dá)。

<template is="objectCombine" data="{{foo, bar}}"></template>
Page({
  data: {
    foo: 'my-foo',
    bar: 'my-bar'
  }
})

最終組合成的對(duì)象是 {foo: 'my-foo', bar:'my-bar'}。

注意:上述方式可以隨意組合,但是如有存在變量名相同的情況,后邊的會(huì)覆蓋前面,如:

<template is="objectCombine" data="{{...obj1, ...obj2, a, c: 6}}"></template>
Page({
  data: {
    obj1: {
      a: 1,
      b: 2
    },
    obj2: {
      b: 3,
      c: 4
    },
    a: 5
  }
})

最終組合成的對(duì)象是 {a: 5, b: 3, c: 6}。

注意: 花括號(hào)和引號(hào)之間如果有空格,將最終被解析成為字符串

<view wx:for="{{[1,2,3]}} ">
  {{item}}
</view>
等同于

<view wx:for="{{[1,2,3] + ' '}}">
  {{item}}
</view>
2、列表渲染文檔
<view wx:for="{{array}}">
  {{index}}: {{item.message}}
</view>

使用 wx:for-item 可以指定數(shù)組當(dāng)前元素的變量名,
使用 wx:for-index 可以指定數(shù)組當(dāng)前下標(biāo)的變量名:

<view wx:for="{{array}}" wx:for-index="idx" wx:for-item="itemName">
  {{idx}}: {{itemName.message}}
</view>

block wx:for
類似 block wx:if,也可以將 wx:for 用在<block/>標(biāo)簽上,以渲染一個(gè)包含多節(jié)點(diǎn)的結(jié)構(gòu)塊。例如:

<block wx:for="{{[1, 2, 3]}}">
  <view> {{index}}: </view>
  <view> {{item}} </view>
</block>
wx:key

如果列表中項(xiàng)目的位置會(huì)動(dòng)態(tài)改變或者有新的項(xiàng)目添加到列表中,并且希望列表中的項(xiàng)目保持自己的特征和狀態(tài)(如 <input/> 中的輸入內(nèi)容,<switch/> 的選中狀態(tài)),需要使用 wx:key 來指定列表中項(xiàng)目的唯一的標(biāo)識(shí)符。

wx:key 的值以兩種形式提供

字符串,代表在 for 循環(huán)的 array 中 item 的某個(gè) property,該 property 的值需要是列表中唯一的字符串或數(shù)字,且不能動(dòng)態(tài)改變。
保留關(guān)鍵字 *this 代表在 for 循環(huán)中的 item 本身,這種表示需要 item 本身是一個(gè)唯一的字符串或者數(shù)字,如:
當(dāng)數(shù)據(jù)改變觸發(fā)渲染層重新渲染的時(shí)候,會(huì)校正帶有 key 的組件,框架會(huì)確保他們被重新排序,而不是重新創(chuàng)建,以確保使組件保持自身的狀態(tài),并且提高列表渲染時(shí)的效率。

如不提供 wx:key,會(huì)報(bào)一個(gè) warning, 如果明確知道該列表是靜態(tài),或者不必關(guān)注其順序,可以選擇忽略。
注意:
當(dāng) wx:for 的值為字符串時(shí),會(huì)將字符串解析成字符串?dāng)?shù)組

<view wx:for="array">
  {{item}}
</view>

等同于

<view wx:for="{{['a','r','r','a','y']}}">
  {{item}}
</view>

注意: 花括號(hào)和引號(hào)之間如果有空格,將最終被解析成為字符串

<view wx:for="{{[1,2,3]}} ">
  {{item}}
</view>

等同于

<view wx:for="{{[1,2,3] + ' '}}" >
  {{item}}
</view>
3、條件渲染文檔

wx:if
在框架中,使用 wx:if="{{condition}}" 來判斷是否需要渲染該代碼塊:

<view wx:if="{{condition}}"> True </view>

也可以用 wx:elif 和 wx:else 來添加一個(gè) else 塊:

<view wx:if="{{length > 5}}"> 1 </view>
<view wx:elif="{{length > 2}}"> 2 </view>
<view wx:else> 3 </view>

block wx:if
wx:if vs hidden

4、模板文檔;

參考:https://blog.csdn.net/u013778905/article/details/59646241

5、事件文檔

參考:http://www.wxappclub.com/topic/543

6、應(yīng)用文檔

二、wxs文檔

參考:http://www.wxapp-union.com/article-3015-1.html

三、wxss文檔

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容