一個小程序項目,在根目錄下會有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; }
應用文件來了,頁面文件還會遠么?--不會,就在下一章節。