欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解使用mpvue開(kāi)發(fā)github小程序總結(jié)

 更新時(shí)間:2018年07月25日 10:06:10   作者:cheesekun  
這篇文章主要介紹了詳解使用mpvue開(kāi)發(fā)github小程序總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

前言

最近有點(diǎn)閑,想起關(guān)注已久的mpvue寫小程序,所以稍微肝了半個(gè)多月寫了個(gè)github版的微信小程序,已上線。現(xiàn)在總結(jié)一下遇到的坑。

掃碼體驗(yàn)、

項(xiàng)目地址https://github.com/cheesekun/wx-github

mina坑

scroll-view 高度

可滾動(dòng)視圖區(qū)域。

使用豎向滾動(dòng)時(shí),需要給<scroll-view/>一個(gè)固定高度,通過(guò) WXSS 設(shè)置 height。

小程序提供的scroll-view組件,想讓他能滾動(dòng),就要給他提供一個(gè)固定的高度。

我們一般需求是,上一塊區(qū)域固定,下一塊區(qū)域可滾動(dòng),我的處理方法是,拿到機(jī)型的可視高度,減去上一塊固定區(qū)域的高度,動(dòng)態(tài)賦值scroll-view最終高度。

// 以 search 頁(yè)為例
// 滾動(dòng)區(qū)域高度 = 總高度 - 搜索框高度 - tabs 高度
onLoad () {
 wx.getSystemInfo({
 success: (res) => {
  this.height = res.windowHeight // 獲取機(jī)型可視高度
 }
 })

 let query = wx.createSelectorQuery()
 // 選擇id
 query.select('#search').boundingClientRect()

 query.exec(res => {
 let searchH = res[0].height // 獲取search框高度
 this.height = this.height - searchH - this.tabsH
 })
}

坑點(diǎn):wx.createSelectorQuery()獲取不了display: none的元素高度。

我的解決方法是:在trending頁(yè)獲取到tabs組件的高度,再存放到vuex中,給search頁(yè)使用

生命周期(同一page攜帶不同參數(shù))

小程序生命周期

當(dāng)我們從一個(gè)頁(yè)面①進(jìn)入頁(yè)面②時(shí),我們一般在onLoad進(jìn)行初始數(shù)據(jù)的獲取,

從頁(yè)面②返回到頁(yè)面①時(shí),若兩個(gè)頁(yè)面是不同的page,如①為page/info,

②為page/repo,那沒(méi)問(wèn)題,①頁(yè)面unOnLoad,②頁(yè)面onShow

但是若①為page/info?user=a,②為page/info?user=b,那gg了,從頁(yè)面②返回到頁(yè)面①,頁(yè)面①的數(shù)據(jù)會(huì)變成頁(yè)面②的數(shù)據(jù)

為了避免這種情況,我一開(kāi)始使用onShow代替onLoad,也就是在onShow的時(shí)候獲取頁(yè)面的初始數(shù)據(jù)。但是這個(gè)情況就有點(diǎn)可怕了,我們知道onShow很多情況都會(huì)觸發(fā)到,切換前后臺(tái),從一個(gè)頁(yè)面返回到另一個(gè),都會(huì)觸發(fā)onShow,這就導(dǎo)致會(huì)觸發(fā)很多不必要的請(qǐng)求,而且用戶體驗(yàn)極差。

可我很多需求就是類似從①為page/info?user=a到②為page/info?user=b,因此曲線救國(guó)想出用vuex維護(hù)有相關(guān)需求頁(yè)面的路由棧。

頁(yè)面onLoad的時(shí)候,推入query參數(shù)到棧中,onShow時(shí),若當(dāng)前頁(yè)面的參數(shù)和棧中最后一個(gè)元素相同,則不重新加載數(shù)據(jù)。當(dāng)頁(yè)面被銷毀,則在onUnload中把相應(yīng)的頁(yè)面棧推出。這樣就可以避免很多無(wú)謂的onShow請(qǐng)求。

onLoad () {
 this.reset()
 const options = getQuery()
 user = options.login
 // vuex
 this.reposStack.push(options)

 this.getRepos()
 },
 onShow () {
 const options = getQuery()
 // vuex
 let reposStack = JSON.parse(JSON.stringify(this.reposStack))
 let len = reposStack.length
 let endStack = reposStack[len - 1]
 if (JSON.stringify(endStack) === JSON.stringify(options)) {
  return
 }
 this.reset()
 user = options.login
 this.getRepos()
 },
 onUnload () {
 // vuex
 this.reposStack.slice(0, -1)
 }

mpvue坑

query參數(shù)

mpvue可以通過(guò) this.$root.$mp.query 在所有頁(yè)面的組件內(nèi)獲取路徑參數(shù)。

如果以mina來(lái)說(shuō)的話,我們是通過(guò)在生命周期onLoad(options),拿到options上攜帶的路徑參數(shù),mpvue提供了this.$root.$mp.query ,我們可以所有生命周期上使用。

但是我們知道,當(dāng)我們從當(dāng)前頁(yè)返回到上一頁(yè)時(shí),上一頁(yè)并不會(huì)執(zhí)行onLoad(),

假設(shè)當(dāng)前頁(yè)和上一頁(yè)是同個(gè)page,只是攜帶參數(shù)不同的話,此時(shí)回退到上一頁(yè),

上一頁(yè)的this.$root.$mp.query不會(huì)變成自己的query,還是會(huì)變成當(dāng)前頁(yè)的query

舉例:①page/info?a=1 => ②page/info?b=2

當(dāng)我從②返回到①時(shí),①的this.$root.$mp.query會(huì)變成{b:2}

我猜mpvuethis.$root.$mp.query是通過(guò)onLoad(options)獲取到options,再賦值。但是遇到小程序頁(yè)面返回不會(huì)執(zhí)行onLoad

為了避免麻煩,我直接使用了小程序的api getCurrentPages(),獲取路由棧中最后一個(gè)路由的參數(shù)

getCurrentPages() 函數(shù)用于獲取當(dāng)前頁(yè)面棧的實(shí)例,以數(shù)組形式按棧的順序給出,第一個(gè)元素為首頁(yè),最后一個(gè)元素為當(dāng)前頁(yè)面。
/**
 * 獲取當(dāng)前路徑參數(shù)
 * 不用mpvue提供的this.$root.$mp.query
 * 因?yàn)槠溥M(jìn)入同一頁(yè)面,參數(shù)不會(huì)變化
*/
export function getQuery () {
 /* 獲取當(dāng)前路由棧數(shù)組 */
 const pages = getCurrentPages()
 const currentPage = pages[pages.length - 1]
 const options = currentPage.options

 return options
} 

后記

前面幾個(gè)問(wèn)題是我初次使用mpvue開(kāi)發(fā)小程序遇到的最大的坑了吧。(好久沒(méi)有寫東西了,寫得好爛。)不過(guò)確實(shí)使用mpvue開(kāi)發(fā)小程序,能組件化,支持npm,比原生開(kāi)發(fā)舒服很多。體驗(yàn)還是很好的。

小程序現(xiàn)在是真的太火了。感覺(jué)是個(gè)前端都要去玩一下。

再次推一下項(xiàng)目地址,有興趣的朋友可以參考一下。https://github.com/cheesekun/wx-github

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解element-ui表格中勾選checkbox,高亮當(dāng)前行

    詳解element-ui表格中勾選checkbox,高亮當(dāng)前行

    這篇文章主要介紹了詳解element-ui表格中勾選checkbox,高亮當(dāng)前行,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • vue中使用iview自定義驗(yàn)證關(guān)鍵詞輸入框問(wèn)題及解決方法

    vue中使用iview自定義驗(yàn)證關(guān)鍵詞輸入框問(wèn)題及解決方法

    這篇文章主要介紹了vue中使用iview自定義驗(yàn)證關(guān)鍵詞輸入框問(wèn)題及解決方法,本文通過(guò)實(shí)例結(jié)合代碼的形式給大家介紹解決方法,需要的朋友可以參考下
    2018-03-03
  • vue-cli使用stimulsoft.reports.js的詳細(xì)教程

    vue-cli使用stimulsoft.reports.js的詳細(xì)教程

    Stimulsoft?Reports.JS是一個(gè)使用JavaScript和HTML5生成報(bào)表的平臺(tái)。它擁有所有擁來(lái)設(shè)計(jì),編輯和查看報(bào)表的必需組件。該報(bào)表工具根據(jù)開(kāi)發(fā)人員數(shù)量授權(quán)而不是根據(jù)應(yīng)用程序的用戶數(shù)量。接下來(lái)通過(guò)本文給大家介紹vue-cli使用stimulsoft.reports.js的方法,一起看看吧
    2021-12-12
  • vue中動(dòng)態(tài)渲染數(shù)據(jù)時(shí)使用$refs無(wú)效的解決

    vue中動(dòng)態(tài)渲染數(shù)據(jù)時(shí)使用$refs無(wú)效的解決

    這篇文章主要介紹了vue中動(dòng)態(tài)渲染數(shù)據(jù)時(shí)使用$refs無(wú)效的解決方案,具有很好的參考價(jià)值。希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue +elementui 導(dǎo)入CSV文件的方式

    vue +elementui 導(dǎo)入CSV文件的方式

    封裝一個(gè)公共js方法,使用papaparse解析CSV文件且返回?cái)?shù)組格式,下面通過(guò)示例代碼介紹vue +elementui 導(dǎo)入CSV文件的方式,感興趣的朋友一起看看吧
    2024-04-04
  • nuxt引入組件和公共樣式的操作

    nuxt引入組件和公共樣式的操作

    這篇文章主要介紹了nuxt引入組件和公共樣式的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • Vue組件如何設(shè)置Props實(shí)例詳解

    Vue組件如何設(shè)置Props實(shí)例詳解

    props主要用于組件的傳值,他的工作就是為了接收外面?zhèn)鬟^(guò)來(lái)的數(shù)據(jù),與data、el、ref是一個(gè)級(jí)別的配置項(xiàng),下面這篇文章主要給大家介紹了關(guān)于Vue組件如何設(shè)置Props的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • Vue路由組件通過(guò)props配置傳參的實(shí)現(xiàn)

    Vue路由組件通過(guò)props配置傳參的實(shí)現(xiàn)

    本文主要介紹了Vue路由組件通過(guò)props配置傳參的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • v-show和v-if的區(qū)別?及應(yīng)用場(chǎng)景

    v-show和v-if的區(qū)別?及應(yīng)用場(chǎng)景

    這篇文章主要介紹了v-show和v-if的區(qū)別及應(yīng)用場(chǎng)景,vue中v-show與?v-if的作用效果是相同的,都能控制元素在頁(yè)面是否顯示,但是也有一定的區(qū)別,下面文章梳理總結(jié)v-show和v-if的區(qū)別,需要的小伙伴可以參考一下
    2022-06-06
  • 關(guān)于ElementUI的el-upload組件二次封裝的問(wèn)題

    關(guān)于ElementUI的el-upload組件二次封裝的問(wèn)題

    這篇文章主要介紹了關(guān)于ElementUI的el-upload組件二次封裝的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10

最新評(píng)論