微信小程序 注冊程序 App()函數(shù)

2022-05-11 15:59 更新

App

App()


App()函數(shù)用來注冊一個(gè)小程序。接受一個(gè)object參數(shù),其指定小程序的生命周期函數(shù)等。

object參數(shù)說明:

屬性 類型 描述 觸發(fā)時(shí)機(jī)
onLaunch Function 生命周期函數(shù)--監(jiān)聽小程序初始化 當(dāng)小程序初始化完成時(shí),會觸發(fā) onLaunch(全局只觸發(fā)一次)
onShow Function 生命周期函數(shù)--監(jiān)聽小程序顯示 當(dāng)小程序啟動(dòng),或從后臺進(jìn)入前臺顯示,會觸發(fā) onShow
onHide Function 生命周期函數(shù)--監(jiān)聽小程序隱藏 當(dāng)小程序從前臺進(jìn)入后臺,會觸發(fā) onHide
onError Function 錯(cuò)誤監(jiān)聽函數(shù) 當(dāng)小程序發(fā)生腳本錯(cuò)誤,或者 api 調(diào)用失敗時(shí),會觸發(fā) onError 并帶上錯(cuò)誤信息
onPageNotFound
Function
頁面不存在監(jiān)聽函數(shù)
當(dāng)小程序出現(xiàn)要打開的頁面不存在的情況,會帶上頁面信息回調(diào)該函數(shù),詳見下文
其他 Any
開發(fā)者可以添加任意的函數(shù)或數(shù)據(jù)到 Object 參數(shù)中,用 this 可以訪問

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

關(guān)閉小程序(基礎(chǔ)庫版本1.1.0開始支持):當(dāng)用戶從掃一掃、轉(zhuǎn)發(fā)等入口(場景值為1007, 1008, 1011, 1025)進(jìn)入小程序,且沒有置頂小程序的情況下退出,小程序會被銷毀。小程序運(yùn)行機(jī)制在基礎(chǔ)庫版本 1.4.0 有所改變:上一條關(guān)閉邏輯在新版本已不適用, 詳情

示例代碼:

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

onLaunch, onShow 參數(shù)

字段 類型 說明
path String 打開小程序的路徑
query Object 打開小程序的query
scene Number 打開小程序的場景值
shareTicket String shareTicket,詳見 獲取更多轉(zhuǎn)發(fā)信息
referrerInfo Object 當(dāng)場景為由另一個(gè)小程序打開時(shí),返回此字段
referrerInfo.appId String 來源小程序的 appId
referrerInfo.extraData Object 來源小程序傳過來的數(shù)據(jù)

場景值 詳見。

以下場景支持返回 referrerInfo.appId:

場景值 場景 appId 信息含義
1020 公眾號 profile 頁相關(guān)小程序列表 返回來源公眾號 appId
1035 公眾號自定義菜單 返回來源公眾號 appId
1036 App 分享消息卡片 返回來源應(yīng)用 appId
1037 小程序打開小程序 返回來源小程序 appId
1038 從另一個(gè)小程序返回 返回來源小程序 appId
1043 公眾號模板消息 返回來源公眾號 appId

onPageNotFound

基礎(chǔ)庫 1.9.90 開始支持,低版本需做兼容處理

當(dāng)要打開的頁面并不存在時(shí),會回調(diào)這個(gè)監(jiān)聽器,并帶上以下信息:

字段 類型 說明
path String 不存在頁面的路徑
query Object 打開不存在頁面的 query
isEntryPage Boolean 是否本次啟動(dòng)的首個(gè)頁面(例如從分享等入口進(jìn)來,首個(gè)頁面是開發(fā)者配置的分享頁面)

開發(fā)者可以在 onPageNotFound 回調(diào)中進(jìn)行重定向處理,但必須在回調(diào)中同步處理,異步處理(例如 setTimeout 異步執(zhí)行)無效。

示例代碼:

App({
  onPageNotFound(res) {
    wx.redirectTo({
      url: 'pages/...'
    })
  }
})

注意:

  1. 微信開發(fā)者工具暫不支持 onPageNotFound 調(diào)試,請使用真機(jī)調(diào)試
  2. 如果開發(fā)者沒有添加 onPageNotFound 監(jiān)聽,當(dāng)跳轉(zhuǎn)頁面不存在時(shí),將推入微信客戶端原生的頁面不存在提示頁面
  3. 如果 onPageNotFound 回調(diào)中又重定向到另一個(gè)不存在的頁面,將推入微信客戶端原生的頁面不存在提示頁面,并且不在回調(diào) onPageNotFound

getApp()


我們提供了全局的getApp()函數(shù),可以獲取到小程序?qū)嵗?/p>

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

注意:

App()必須在app.js中注冊,且不能注冊多個(gè)。

不要在定義于App()內(nèi)的函數(shù)中調(diào)用getApp(),使用this就可以拿到app實(shí)例。

不要在onLaunch的時(shí)候調(diào)用getCurrentPage(),此時(shí)page還沒有生成。

通過getApp()獲取實(shí)例之后,不要私自調(diào)用生命周期函數(shù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號