1. 程式人生 > >一個人開發一個產品,小程式從0到1,第3章 應用檔案

一個人開發一個產品,小程式從0到1,第3章 應用檔案

一個小程式專案,在根目錄下會有3個應用檔案,一個是全域性業務邏輯檔案app.js,一個是公共配置檔案app.json,還有一個是公共樣式表文件app.wxss。在這3個檔案中,app.js和app.json是不可刪除,是必須有的檔案。

3.1 app.js

開啟檔案的那一瞬間,我才知道:人生遇到的人很多,但真正懂你的人卻寥寥無幾。懂你的人,即使你不說話,他也知道你的喜怒哀樂。不懂你的人呢,就給你一大堆程式碼,也不管你是否有了基礎。如果有基礎,我看這個幹啥,如果沒有,我看這個幹啥?

清空onLaunch裡面的程式碼,只留一個空方法就好。好看的皮囊千篇一律,有趣的

靈魂萬里挑一。App()必須且只能在app.js中呼叫一次,否則會出現無法預期的後果。

在onLaunch或其他函式中,可通過this(App例項)呼叫globalData全域性變數。

//app.js

App({

  onLaunch: function () {

let user = this.globalData.userInfo;

  },

  globalData: {

    userInfo: null

  }

})

在App()裡,除了onLaunch,還有onShow、onError等函式。

備註:當用戶點選左上角關閉,或者按了裝置 Home 鍵離開微信,小程式並沒有直接銷燬而是進入了後臺;當再次進入微信或再次開啟小程式,又會從後臺進入前臺。

如果想在onLaunch或onShow函式中,獲取相關引數內容,只要帶上引數options一起飛就可以了。

//app.js

App({

  /**

   *啟動執行的初始化方法

   * 首次開啟時執行,全域性只觸發一次

   */

  onLaunch: function(options) {

    console.log('page:', options.path);

  },

  //小程式啟動或從後臺進入到前臺時觸發

  onShow: function(options) {

    console.log('scene:', options.scene);

  },

  //全域性變數

  globalData: {

    userInfo: null

  }

})

 

輸出結果:

page: pages/index/index
scene: 1001

options可以獲取的值列表

3.2 app.json

全域性配置檔案,可配置且必須配置的頁面路徑;可配置視窗風格,如標題欄背景色和標題;可配置全域性tab標籤、網路超時時間和多tab等。常用配置項列表如下。

pages

每一項代表對應頁面的路徑和檔名(不用字尾),陣列的第一項為首頁。小程式新增或刪除頁面時,必須跟pages同步。

"pages": [
  "pages/index/index",
  "pages/logs/logs"
 ]

window

用於設定小程式的狀態列、導航條、標題、視窗背景色。

型別中的HexColor為十六進位制顏色值,如"#ff0000"。屬性backgroundColor配置的視窗背景色,在下拉重新整理或上拉載入時才能見到。如果要配置頁面背景色,可到app.wxss進行全域性配置或到index.wxss進行單個頁面配置。

"window": {
  "backgroundTextStyle": "light",
  "navigationBarBackgroundColor": "#00a24d",
  "navigationBarTitleText": "導航欄標題",
  "backgroundColor": "#cccccc",
  "navigationBarTextStyle": "white",
  "enablePullDownRefresh": true
}

tabBar

如果小程式是一個多 tab 應用,可以通過tabBar配置項指定tab欄的表現,以及 tab 切換時顯示的對應頁面。tab數目最少 2 個、最多 5 個。

 

其中 list 接受一個數組,陣列中的每個項都是一個物件,屬性列表。

圖示大小限制為40kb,建議尺寸為 81px * 81px,當postion為top,既tab在頂部時,iconPath和selectedIconPath無效。

在專案根目錄下新建images目錄,上網搜尋“首頁”、“日誌”圖示。圖示預設顏色為:#8b8b8b,選中時顏色為:#00a24d,大小為81*81。如果實在不想折騰,那就關注公眾號半碼,輸入:芝麻開門,獲取圖示下載地址。

"tabBar": {
    "borderStyle": "black",
    "backgroundColor": "#ffffff",
    "color": "#8b8b8b",
    "selectedColor": "#00a24d",
    "list": [
      {
        "iconPath": "images/index.png",
        "selectedIconPath": "images/index_p.png",
        "pagePath": "pages/index/index",
        "text": "首頁"
      },
      {
        "iconPath": "images/log.png",
        "selectedIconPath": "images/log_p.png",
        "pagePath": "pages/logs/logs",
        "text": "日誌"
      }
    ]
  }

networkTimeout

網路請求的超時時間,預設為60000毫秒,既1分鐘,在呼叫wx.uploadFile上傳檔案,wx.downloadFile下載檔案,wx.request上傳/下載資料和wx.connectSocket網路通訊介面時會用到。

"networkTimeout": {
    "request": 10000,
    "downloadFile": 10000
  }

requiredBackgroundModes

配置在後臺執行的能力,目前只支援audio:後臺播放音樂和location:後臺定位兩項。

"requiredBackgroundModes": [
   "audio",
   "location"
 ]

navigateToMiniProgramAppIdList

當前小程式需要使用 wx.navigateToMiniProgram 介面跳轉到其他小程式時,需要先在配置檔案中宣告需要跳轉的小程式appId 列表,最多允許填寫 10 個。

"navigateToMiniProgramAppIdList": [
    "wx3ea04d8***126a29"
  ]

permission

小程式用到敏感功能,如獲取地理位置時,需要彈窗詢問使用者,使用者點選同意後才可呼叫介面獲取相關資訊,如經緯度。詢問視窗上的內容,就是這裡的desc值。

"permission": {
    "scope.userLocation": {
      "desc": "唯有授予位置許可權,才好找你吹牛皮"
    }
  }

3.3 app.wxss

WXSS是一套樣式語言,用於描述WXML檔案裡的元件樣式,決定元件應該怎麼顯示。為了可對wxss資源進行復用,小程式對CSS進行了擴充,使其支援:通過@import語句後接外聯樣式表的相對路徑並用;結束的方式匯入樣式。

app.wxss為公共樣式表,不用顯示引入,便可在頁面檔案wxml中使用。

/** common.wxss **/
.bg {
    background-color: #cccccc;
}

/**app.wxss**/
@import "common.wxss";

.container {
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
  padding: 200rpx 0;
  box-sizing: border-box;
} 

應用檔案來了,頁面檔案還會遠麼?--不會,就在下一章節。