微信小程序進入到首頁的時候,日誌打印出「created」, 「onlaunch」, 「mounted」,具體代碼以下:
那麼,在小程序中 created() 和 mounted() 究竟什麼時刻被調用
首頁:css
created () { console.log('created') }, mounted () { console.log('mounted') }, // 監聽頁面加載 onLoad () { console.log('onlaunch') }
解釋:vue
生命週期執行順序是vue的 created() 函數 —> 小程序的 onLoad()函數 -> vue的mounted()函數,故,小程序開始運行直到第一頁出現以前,全部的 vue 實例就已經被建立,也就是說全部的 created() 都被執行。針對每個頁面,onLoad()只會調用一次。
把微信小程序的生命週期勾子和mpvue的生命週期勾子一塊兒使用常令人陷入混亂,因此mpvue官網有這樣一句話:除特殊狀況外,不建議使用小程序的生命週期鉤子webpack
mpvue不支持vue-router
頁面跳轉常使用 navigateTo 或者 redirectTo
二者區別:navigateTo 進行頁面跳轉後不會關閉當前頁面,此時小程序左上角會出現一個「後退」按鈕,能夠點擊進入到上一個頁面。navigateTo 進行頁面跳轉後會關閉當前頁面,故用戶沒法進行後退操做。web
新增了page頁面,使用微信開發者工具加載不出來
解決辦法:從新 npm run dev
緣由:webpack編譯文件是由entery決定的,新增的頁面沒有加入到enteryvue-router
使用微信開發者工具,點擊input沒法獲取焦點(多發生在聯想電腦上,mac電腦上比較少見)
解決辦法:長按。若是長按也不行的話,就在該inpu輸入框的上方或者周圍點擊,試圖獲取焦點npm
下面點擊事件無效
// Button 是自定義組件 <Button :btns="resetBtn" @click="resetPwd"></Button>
解決辦法:小程序
<div @click="resetPwd"> <Button :btns="resetBtn"></Button> </div>
緣由:不能直接在組件上綁定點擊事件微信小程序
利用props傳值卻栽了個跟頭,以下
建立了一個公共組件 MbInput ,調用該組件的時候須要經過 prop 傳入 maxlength 值。可是在開發過程當中沒有傳入,則默認解析結果爲 maxlength=0,因此致使沒法輸入信息。原代碼以下:緩存
export default { props: ['placeholder', 'list', 'maxlength'] }
建議修改以下,設置該字段必須填寫或者給出默認值安全
export default { props: { placeholder: { // 必須提供字段 required: true }, list: { // 必須提供字段 required: true }, maxlength: { // 可選字段,有默認值 default: 11 } } }
設計給出這樣一個需求,要求頁面展現以下
要求:
頁面中的項目格式是動態變化的,須要顯示的項目通常在1-4個之間
只有一個的時候,上下左右居中顯示
有兩個的時候並排顯示,上下居中
有三個的時候,以下圖
佈局方法:
(1)使用左浮動
(2)使用flex佈局,justfy-content: space-around。一個項目的時候,左右居中顯示;兩個項目的時候,並排,空隙平均分配;三個項目的時候,第三個項目將在它所在的那一行左右居中,爲了解決這個問題,動態的在第三個後面添加一個同樣寬度的div,設置這個div透明,這樣就能達到咱們想要的排列效果
關於小程序的wx.setStorage等接口咱們能夠設置對本地緩存進行設置、獲取和清理。本地緩存最大爲10MB。那麼本地緩存時間是多久?
這些緩存不清理會永久的緩存
該小程序配置session配置
使用 session 的意義:安全。當客戶端和服務端創建起鏈接後,服務端生成JSESSIONID用戶標識該用戶身份,這個JSESSIONID將被客戶端主動存儲到cookie中,每次發起鏈接請求的時候,將cookie攜帶到header裏一塊兒發送。
不選擇向客戶端種cookie的緣由:不少時候cookie在客戶端(手機端)是被禁用的;因爲cookie存放在客戶端,容易被惡意竊取或修改。
配置流程下:
(1)創建鏈接後,服務端生成JSESSIONID發送給客戶端
(2)客戶端將該JSESSIONID存儲到本地,每次發送請求的時候將其放入header裏一塊兒傳送
header: { 'content-type': 'application/x-www-form-urlencoded', cookie: `JSESSIONID=${(getApp().globalData.userInfo && getApp().globalData.userInfo.sessionId) || ''}` }
v-show不起做用
緣由:v-show 沒法用於 <template> 元素
解決辦法:使用v-if
v-if一般會完整的建立/銷燬組件,而v-show只是簡單的進行css切換,因此v-if切換時開銷更高,建議頻繁切換的花使用v-show
created()裏面的跳轉無效
不要在created()函數裏面進行頁面跳轉
連續點擊後退會報錯小程序用navigate跳來跳去不刷新頁面嗎