1. 程式人生 > >02——微信小程序官方demo講解——app部分

02——微信小程序官方demo講解——app部分

time 個數 目錄結構 src 4.2 err 設置網絡 dex unshift

第一節講了目錄結構,這節主要講解下目錄中app.js部分。

它由三部分組成app.js、app.json與app.wxss

1.JS部分

1.1概述

//app.js
App({
  onLaunch: function () {
    // 展示本地存儲能力
    var logs = wx.getStorageSync(‘logs‘) || []
    logs.unshift(Date.now())
    wx.setStorageSync(‘logs‘, logs)

    // 登錄
    wx.login({
      success: res => {
        
// 發送 res.code 到後臺換取 openId, sessionKey, unionId } }) // 獲取用戶信息 wx.getSetting({ success: res => { if (res.authSetting[‘scope.userInfo‘]) { // 已經授權,可以直接調用 getUserInfo 獲取頭像昵稱,不會彈框 wx.getUserInfo({ success: res => { // 可以將 res 發送給後臺解碼出 unionId
this.globalData.userInfo = res.userInfo // 由於 getUserInfo 是網絡請求,可能會在 Page.onLoad 之後才返回 // 所以此處加入 callback 以防止這種情況 if (this.userInfoReadyCallback) { this.userInfoReadyCallback(res) } } }) } } }) }, globalData: { userInfo:
null } })

說明:一個項目有且僅有一個app模塊。該模塊中

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

app中可以指定四個周期onLaunch、onShow、onHide、onError。

其中。全局的 getApp() 函數可以用來獲取到小程序實例。

其中除了可以設置上面四個生命周期函數外,還可以配置其他自定義屬性。作為這個app的全局變量。例如

App({
   myObj: {} //其他頁面中都可以獲取到該變量 
})

1.2場景值

由於一個小程序可以從眾多入口中進入,比如最近聯系人列表中下拉時出現的菜單,以及小程序模塊中搜索小程序,所以每次進入小程序的時候都會攜帶一個id。小程序中這個id的術語叫場景值,這個場景值可以從app中的onLaunch,或者onShow函數中獲取。

2.JSON部分

{
  "pages": [
    "pages/index/index",
    "pages/logs/index"
  ],
  "window": {
    "navigationBarTitleText": "Demo"
  },
  "tabBar": {
    "list": [{
      "pagePath": "pages/index/index",
      "text": "首頁"
    }, {
      "pagePath": "pages/logs/logs",
      "text": "日誌"
    }]
  },
  "networkTimeout": {
    "request": 10000,
    "downloadFile": 10000
  },
  "debug": true
}

解釋:

pages:該app下有哪些頁面,是一個數組,每一項對應一個頁面路徑。其中第一項為首頁。

windows:可以對頁面進行一些顏色配置。如圖所示:

技術分享圖片

tabbar,可選項。用於定義主頁面下方的tabbar。

networkTimeout:用於設置網絡請求超時時間。

常用的就這些。

3.WXSS部分

該部分定義應用級別的樣式,類似於web開發中的common.css。

只要定義在這裏的樣式。可以在任務和一個頁面下訪問。

4.一些技巧:

4.1 可以在app.js中的onLaunch中利用wx的api。監聽網絡變化,以提示用戶網絡環境的變化。比如沒網了。有網了之類的。

4.2 待續。

02——微信小程序官方demo講解——app部分