框架選擇:習(xí)慣用VUE的話(huà)就選擇VUX吧,集成度高,文檔詳細(xì)等等,都是優(yōu)點(diǎn)。
首先,既然是移動(dòng)端頁(yè)面,第一個(gè)逃不過(guò)的坑就是頁(yè)面適配問(wèn)題了。
1、大家可能第一想到的是rem單位,貌似很多人認(rèn)為這個(gè)單位是解決該問(wèn)題萬(wàn)能的,其實(shí)不是,這個(gè)方式并不是最好的方式。
html{
font-size:625%
}
2、還有一種就是利用js動(dòng)態(tài)給html和body加font-size,大家一定想到的是lib-flexible這個(gè)庫(kù)了(不清楚的自己百度)。這是個(gè)不錯(cuò)的解決方案(配合第一種方式),之前淘寶也在用,不過(guò)現(xiàn)在基本可以放棄了。
3、最后一種,也是我現(xiàn)在用的,可參考這篇文章,說(shuō)的已經(jīng)非常詳細(xì)了。
說(shuō)完適配這個(gè)坑,接著說(shuō)說(shuō)一些神奇的坑。
1、微信在進(jìn)入后臺(tái)的時(shí)候,當(dāng)你的頁(yè)面還打開(kāi)著,并且你的某些ajax請(qǐng)求是在這之后發(fā)起的,你可能要問(wèn)什么樣的請(qǐng)求會(huì)在這個(gè)時(shí)候發(fā)起呢,舉個(gè)例子:
document.addEventListener('visibilitychange',async ()=>{
if (document.visibilityState === 'hidden') { //改為visible
this.$get('/api/...').then(res=>{ })
}
});
當(dāng)有些操作是在你判斷頁(yè)面可見(jiàn)性的時(shí)候請(qǐng)求的,這時(shí)候ajax請(qǐng)求是不會(huì)成功的,用Pormise的時(shí)候回直接被catch到,解決方法就是把請(qǐng)求放在document.visibilityState為visible的時(shí)候,或者盡量避開(kāi)這樣的設(shè)計(jì)。
2、關(guān)于頁(yè)面后退不刷新問(wèn)題。
當(dāng)你在頁(yè)面執(zhí)行history.back()方法的時(shí)候,頁(yè)面是不會(huì)刷新的,如果想要刷新解決方式有很多,比如location.replace(document.referrer),方式百度一下就有很多,可選擇你想要的一個(gè)就行。
3、微信頁(yè)面存在獨(dú)有的瀏覽器api
第一次做微信公眾號(hào)頁(yè)面的時(shí)候還不知道有這個(gè)東西,直到產(chǎn)品經(jīng)理說(shuō)希望能實(shí)現(xiàn)點(diǎn)擊底部的返回按鈕(ios)的時(shí)候,能關(guān)閉頁(yè)面回到聊天界面。查了查資料發(fā)現(xiàn),微信瀏覽器環(huán)境下有很多獨(dú)有的api。具體有哪些可以參考這個(gè)網(wǎng)址,當(dāng)然有些可以通過(guò)jssdk實(shí)現(xiàn)。