一個人開發一個產品,小程式從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; }
應用檔案來了,頁面檔案還會遠麼?--不會,就在下一章節。