1慢宗、小程序的啟動:
冷啟動: 如果用戶首次打開轴合,或小程序銷毀后被用戶再次打開,此時(shí)小程序需要重新加載啟動尔艇,即冷啟動裹赴。
熱啟動: 如果用戶已經(jīng)打開過某小程序喜庞,然后在一定時(shí)間內(nèi)再次打開該小程序,此時(shí)小程序并未被銷毀棋返,只是從后臺狀態(tài)進(jìn)入前臺狀態(tài)延都,這個(gè)過程就是熱啟動。
從小程序生命周期的角度來看睛竣,我們一般講的「啟動」專指冷啟動晰房,熱啟動一般被稱為后臺切前臺
2、小程序的更新機(jī)制:
在訪問小程序時(shí)射沟,微信會將小程序的代碼包緩存到本地殊者。
小程序的更新機(jī)有兩種:啟動時(shí) 同步更新,和 啟動時(shí) 異步更新验夯。
啟動時(shí)同步更新:微信運(yùn)行時(shí)猖吴,會定期檢查最近使用的小程序是否有更新,如果有更新挥转,下次小程序啟動時(shí)會同步進(jìn)行更新海蔽,更新到最新版本后再打開小程序。如果用戶長時(shí)間未使用小程序绑谣,會強(qiáng)制同步檢查版本更新准潭。
啟動時(shí)異步更新:在啟動前沒有發(fā)現(xiàn)更新,小程序每次冷啟動時(shí)域仇,都會異步檢查是否更新版本刑然。如果發(fā)現(xiàn)有新版本,將會異步下載新版本的代碼包暇务,將新版本的小程序在下一次冷啟動進(jìn)行使用泼掠,當(dāng)前訪問使用的依然是本地的舊版本代碼。
onLaunch: 是小程序的鉤子函數(shù)垦细,這個(gè)鉤子函數(shù)在冷啟動時(shí)肯定會執(zhí)行择镇,自動向微信后臺請求版本信息,如有新版本括改,會進(jìn)行立即下載腻豌。
3、小程序的生命周期:
一個(gè)小程序的生命周期由 應(yīng)用生命周期、頁面生命周期和組件生命周期三部分來組成吝梅。
(1) 應(yīng)用生命周期:指 小程序從 啟動 -> 運(yùn)行 ->銷毀 的整個(gè)過程
·app.js——應(yīng)用生命周期函數(shù):onLaunch(小程序初始化)虱疏、onShow(小程序啟動或切前臺)、onHide(小程序切后臺)
(2)頁面的生命周期:指 頁面從 加載-> 運(yùn)行 ->銷毀 的整個(gè)過程
頁面的js——頁面的生命周期函數(shù):onLoad(監(jiān)聽頁面加載)苏携、onShow(監(jiān)聽頁面展示)做瞪、onReady(監(jiān)聽頁面渲染完成)、onUnload(監(jiān)聽頁面卸載)右冻、onHide(監(jiān)聽頁面隱藏)
注意:1装蓬、tabBar頁面之間相互切換,頁面不會被銷毀纱扭。2牍帚、點(diǎn)擊左上角返回上一個(gè)頁面,會銷毀當(dāng)前頁面乳蛾。
4履羞、小程序API:
(1)分類:
異步API:通常接收一個(gè)object類型的參數(shù),例如:wx.request({})
同步API:約定以Sync結(jié)尾屡久,例如wx.setStorageSync()
時(shí)間監(jiān)聽API:約定以on開頭忆首,例如onAppHide()
異步API支持callback&Promise兩種調(diào)用方式:
1、當(dāng)接口參數(shù)Object對象中不包含success被环、fall糙及、complete時(shí)將默認(rèn)返回Promise
2、部分接口如request筛欢、uploadFile本身就有返回值浸锨,因此不支持Promise風(fēng)格調(diào)用方式,他們的promisify需要開發(fā)者自行封裝版姑。
(2)列舉介紹:
a柱搜、wx.request()發(fā)起網(wǎng)絡(luò)請求; wx.request請求域名必須在微信公眾平臺進(jìn)行配置剥险。
b聪蘸、用于頁面交互的api:
wx.showLoading() :顯示loading提示框
wx.hideLoading():關(guān)閉loading提示框
wx.showToast():消息提示框,根據(jù)用戶的某些操作來告知操作的結(jié)果表制,例如退出成功給用戶提示健爬;提示刪除成功等。
wx.showModal():模態(tài)對話框(消息確認(rèn)框)么介,用于詢問用戶是否執(zhí)行一些操作娜遵。例如:詢問用戶是否退出登錄,是否刪除等壤短。
c设拟、小程序 本地 存儲API:
同步API:
存儲:wx.setStorageSync(key,value) 獲瓤隆:wx.getStorageSync(key) 刪除:wx.removeStorageSync(key) 清空:wx.clearStorageSync()
異步API:
存儲:wx.setStorage({key:“”,data:value}) 獲取:wx.getStorage({key:“”}) 刪除:wx.removeStorage({key:“”}) 清空:wx.clearStorage()
注意:對象類型的數(shù)據(jù)纳胧,直接進(jìn)行存儲镰吆,不需要使用JOSN.stringify()、JOSN.parse()轉(zhuǎn)換躲雅。
d、編程式導(dǎo)航:
小程序頁面跳轉(zhuǎn)的的兩種方式:
(1)聲明式導(dǎo)航:navigator組件
(2)編程式導(dǎo)航:使用小程序提供的API
e骡和、頁面處理函數(shù):
上拉加載:
(1)在app.json或者page.json中配置舉例頁面底部距離:onreachBottomDistance
(2)在頁面.js中定義onReachBottom事件監(jiān)聽用戶上拉加載
下拉刷新:
(1)在app.json或者page.json中開啟允許下拉相赁,同事可以配置窗口、loading樣式慰于。
(2)在頁面.js中定義onPullDownRefresh事件監(jiān)聽用戶下拉刷新钮科。
f、scroll-view:實(shí)現(xiàn)上拉加載更多和下拉刷新功能婆赠。
scroll-view文檔說明
<scroll-view scroll-y
class="scroll-y"
lower-threshold="100"? //距離底部/右邊多遠(yuǎn)時(shí)绵脯,觸發(fā)scrolltolower事件
bindscrolltolower="getMore"? //上拉加載更多 滾動到底部/右邊時(shí)觸發(fā)
enable-back-to-top="true"? //iOS點(diǎn)擊頂部狀態(tài)欄、安卓雙擊標(biāo)題欄時(shí)休里,滾動條返回頂部蛆挫,只支持豎向
refresher-enabled="true" //開啟下拉刷新
refresher-default-style="black"? //設(shè)置自定義下拉刷新的默認(rèn)樣式,支持設(shè)置 black | white | none
refresher-background="#f7f7f8" //設(shè)置自定義下拉刷新區(qū)域背景顏色妙黍,默認(rèn)為透明
bindrefresherrefresh="refreshHandle"? //下拉刷新觸發(fā)事件
refresher-triggered="{{istriggred}}" //設(shè)置下拉刷新是否觸發(fā)悴侵,true表示下拉已經(jīng)被觸發(fā),false表示下拉刷新未被觸發(fā)拭嫁。(進(jìn)而可以設(shè)置請求成功后關(guān)閉下拉狀態(tài))