一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

商城系統 注冊

mpvue開發小程序的難點重點總結

2020-09-27|HiShop
導讀:我們再使用mpvue開發小程序會遇到許多困難,下面就一些困難做一個關于mpvue開發小程序的難點重點總結...

我們再使用mpvue開發小程序會遇到許多困難,下面就一些困難做一個關于mpvue開發小程序的難點重點總結

mpvue開發小程序的難點重點總結

框架的選擇

    原生的小程序我本人并沒有學習過,更別提拿來開發一款商用的小程序了,剛好還在前公司時,當時的前端團隊在提到小程序的解決方案時有分享了mpvue,到了新公司之后技術老大也有提到mpvue,而我本人過去一年多也一直在寫vue,對vue寫法比較熟悉,而且新公司團隊對小程序期待已久,希望盡快上架,所以選擇mpvue來開發也是最快最合理的了!

項目的搭建

    看了mpvue的官方文檔,項目的搭建自然也選擇了官方推薦的 vue-cli , 在看了五分鐘上手教程后,使用命令

vue init mpvue/mpvue-quickstart my-project 

生成了基本的項目,在后來的開發中,項目的配置基本沒做改動,只是添加了less-loader。

目錄結構

基本上是vue-cli生成的目錄結構,加了部分文件夾,主要是與后臺進行數據交互所使用的框架flyio的配置文件夾(api文件夾),以及整個項目數據管理所使用的vuex(store文件夾),整體目錄結構如下:

project 
└───build 
└───config 
└───dist 
└───node_modules 
└───src 
    └───api
        |    ajax.js // flyio請求與響應攔截器的配置文件
        |    config.js // 請求的配置文件
        |    index.js // 生成請求api實例文件
        |    Server.js // 項目的數據請求統一管理文件
    └───components
    └───pages
    └───store
        └───modules // vuex模塊文件夾
        |    index.js // vuex處理文件
    |   App.vue
    |   config.js
    |   main.js
└───static    
    └───images
    └───lib
    └───weui
│   README.md
│   package.json  
│   package-lock.json  
復制代碼

踩到的坑

    相信很多使用過mpvue的同學都或多或少猜到了一些坑,我也是踩到了不少的坑浪費了不少的寶貴時間,雖然網上關于mpvue的踩坑的文章一搜一籮筐,但我還是要寫一下。。。下面就是我在本次小程序開發過程中遇到的坑(們)以及針對它們的解決方案:

### tabBar圖標問題 
復制代碼

    在 配置小程序原生的底部tabBar 時,遇到了第一個問題:在將設計師給我的圖標icon路徑設置正確的情況下, 開發者工具上的tabBar的圖標總是會很大,而且幾乎占滿了整個高度 ,相當難看,搜了很多博客都沒有找到解決辦法,期間還嘗試了自己實現tabBar,但是在看到那令人嘔嘔嘔的效果之后,我還是放棄了,又回到原生的tabBar,然后靜下心來想了想,最后在對比github上的一些mpvue的項目之后,發現原來是圖標icon的問題,最后成功解決: 就是icon尺寸保持不變,然后四周留出合適的透明(?)空白 ...很簡單有木有?就這浪費我很多腦細胞,原諒我的愚鈍(智障臉)。。。當然了,原生的tabBar其實還有一個問題就是, tabBar的標題文字在真機上會離底部特別特別近 ,這個我沒找到解決辦法,除了自己實現tabBar。。。

### 詳情頁數據保留之前舊數據的問題
復制代碼

    這個問題我想很多同學都遇到過了,而且我看到mpvue github上的issues里面有很多人都遇到了這個問題并且都在持續關注,足以說明這是個痛點問題,誰讓它會影響小程序的用戶體驗呢。。。到目前為止看到的比較統一的解決辦法就是:在(詳情)頁面onLoad的時候,將要在本頁面展示的數據初始化并且進行新的賦值,舉:chestnut:如下:

<template>
    <html-text :text="htmltext"></html-text>
</template>
<script>
    import htmlText from xxxxx
    export default {
        components: {
            htmlText
        },
        data () {
            return {
                htmltext: ''
            }
        },
        onLoad () {
            this.htmltext = ''
            this.$http.get('xxxxxxxx').then((res) => {
                this.htmltext = res.htmltext
            })
        }
    }
</script>
復制代碼

    其他數組或者對象類型的處理可能會麻煩一些,但是方法類似,在數據請求返回之前的這段時間內不想留空白尬對用戶的話就自己做一些loading,總是要強過用戶先面對舊數據再一閃跳到新數據的體驗。。。

### created鉤子函數在項目初始化時就全部執行的問題  
復制代碼

    這個我想應該是mpvue的一個bug吧?該鉤子函數在頁面內還是不要隨便用的好。。。

### 目前mpvue對于復雜富文本的支持目前性能較差的問題  
復制代碼

 

### 微信原生的路由跳轉navigateTo(),redirectTo(),navigateBack(),switchTab(),reLaunch()等,在真機上的表現較為怪異
復制代碼

    對于參數的傳遞,我也遇到過類似于舊數據的問題,最后不得已借助于vuex才得以解決。另外小程序的頁面棧個數實在有限,所以在開發時一定要注意頁面棧的管理。

### onShow()的使用要注意
復制代碼

    要記得該鉤子函數里的js代碼不只是剛進入頁面時會執行,在息屏后再次點亮后也將會執行。

對于mpvue的坑突然能想起來的不多了,目前就先寫這么多,后面想起來了再來更新吧。

Flyio的使用

    在小程序的開發中,并沒有使用小程序原生的wx.request()來進行數據交互,而是選擇了mpvue文檔里推薦使用的Flyio,Flyio的介紹就不多做介紹,打架可以自己看文檔,這里我主要說一下的 請求和響應攔截器的構造 :

    文檔里其實有很詳細的介紹以及代碼,但是我根據代碼寫下來之后在遇到登錄失效的問題時并沒有按照預想的解決:先鎖住請求然后重新請求拿到新的cookie之后再重新進行之前的請求,再和其他人討論之后使用promise解決了這一問題,具體可見代碼:

src/api/ajax.js:

/**
 * http請求攔截器
 */
const Fly = require('flyio/dist/npm/wx')
const config = require('./config')

const ajaxUrl =
  process.env.NODE_ENV === 'development'
    ? config.Host.development
    : process.env.NODE_ENV === 'production'
      ? config.Host.production
      : config.Host.test
      
let fly = new Fly()
let loginFly = new Fly()
// 定義公共headers
const headers = {
  ...
}
Object.assign(fly.config, {
  headers: headers,
  baseURL: 'xxxxxx',
  timeout: 10000,
  withCredentials: true
})
loginFly.config = fly.config
// session失效后本地重新登錄
const login = () => {
  return new Promise((resolve, reject) => {
    wx.login({
      success: res => {
        let loginParams = {
          ...
        }
        loginFly.post('/api/locallogin/url', loginParams).then(d => {
          if (d.headers && typeof d.headers['set-cookie'] !== 'undefined') {
            // 更新session
            wx.setStorageSync('sessionid', d.headers['set-cookie'])
          }
          resolve()
        }).catch(error => {
          log(error)
          reject(res.data)
        })
      },
      fail: res => {
        console.error(res.errMsg)
      },
      complete: res => {}
    })
  })
}
// 請求攔截器
fly.interceptors.request.use(request => {
  if (wx.getStorageSync('sessionid')) {
    request.headers.cookie = wx.getStorageSync('sessionid')
  }
  return request
})
// 響應攔截器
fly.interceptors.response.use(
  response => {
    // session已經失效,需要重新登錄小程序
    if (response.data.errCode === 100009) {
      // log('session失效,根據之前存儲在本地的用戶信息重新請求session...')
      // 鎖定響應攔截器
      fly.lock()
      return login().then(() => {
        fly.unlock()
        // log(`重新請求:path:${response.request.url},baseURL:${response.request.baseURL}`)
        return fly.request(response.request)
      }).catch(err => {
        log(err)
      })
    } else {
      return response.data.data
    }
  },
  err => {
    log('error-interceptor', err)
    if (err.status) {
      wx.showToast({
        title: '出現未知錯誤',
        icon: 'none',
        duration: 3000
      })
    }
  }
)
export default fly
復制代碼

vuex的使用

    因為是生活購物類小程序,涉及到 購物車 + 地址選擇 等較為復雜的邏輯,很多地方都需要數據共用,在本期項目中vuex起了很大的作用,因為模塊較多,如果將所有數據寫在一個文件里無疑會為后期維護帶來巨大困難,所以將各模塊的數據單獨劃分寫在各自的文件里,這樣整體流程就清晰了很多,下面是劃分模塊的主文件的代碼

src/store/index.js:

import Vue from 'vue'
import Vuex from 'vuex'

import modules1 from './modules/modules1'
import modules2 from './modules/modules2'
import modules3 from './modules/modules3'
...

Vue.use(Vuex)

export default new Vuex.Store({
  // 做模塊化處理,每個功能一個store.js文件,然后統一在這邊引入
  modules: {
    modules1,
    modules2,
    modules3,
    ...
  }
})
復制代碼

src/store/modules/modules1.js:

import api from '@/api' // actions里請求用到
const state = {
    aaaa,
    ...
}
const getters = {
    aaaa (state) {
        return state.aaaa
    },
    bbbb (state, getters, rootState) {
        return getters.aaaa
    },
    ...
}
// actions里可進行異步操作
const actions = {
    async anExample ({state, getters, dispatch, commit}, {params}) {
        let res = await api.requestFunction({params})
        ...
        return res
    },
    ...
}
const mutations = {
    setStateX (state, Y) {
        state.X = Y
    },
    ...
}
export default {
  namespaced: true, // 很重要
  state,
  getters,
  actions,
  mutations
}
復制代碼

在.vue文件中調用

src/pages/xxx.vue

<script>
import { mapState, mapGetters } from 'vuex'
export default {
   computed: {
        // 調用getters
        ...mapGetters('modules', [
            'aaaa',
            'bbbb'
        ]) 
    },
    methods: {
        // 調用action
        funcA () {
            this.$store.dispatch('modules1/anExample', {params}).then(res => {
                ...
            })
        },
        // 調用mutation
        funcB () {
            this.$store.commit('modules1/setStateX', Y)
        }
    }
}
</script>
復制代碼

HiShop小程序工具提供多類型商城/門店小程序制作,可視化編輯 1秒生成5步上線。通過拖拽、拼接模塊布局小程序商城頁面,所看即所得,只需要美工就能做出精美商城。更多小程序商店請查看:小程序商店

mpvue開發小程序的難點重點總結

電話咨詢 預約演示 0元開店
主站蜘蛛池模板: 男女做=aj视频免费的网站|国产在线观看=av|亚洲国产精品嫩草影院|欧美久久激情|国产网站色|岛国视频在线免费观看 | 岛国精品在线观看|欧美丰满高潮xxxx喷水动漫|国内=av网|亚洲精品久久久久久久久|亚洲精品h|亚洲国产视频一区二区 | 12一14幻女bbwxxxx在线播放|自拍偷拍第5页|成人小视频免费看|在线看黄色片|亚洲精品国产品国语在线观看|欧美中文字幕在线视频 | 狠狠噜天天噜日日噜无码|欧美=a=av|日批视频在线看|少妇videos|免费ā片在线观看|国产成人美女=aV | 亚洲伦理一区二区三区|在线观看=aV网站永久免费观看|狠狠色婷婷丁香五月|色翁荡息又大又硬又粗又爽|中文色视频|成年人免费看的 | 蓝宇在线|国产成人精品午夜视频|成人在线免费播放视频|JZZIJZZIJ在线观看亚洲熟妇|久久99热国产|亚洲=aV男人的天堂在线观看 | 午夜老司机免费视频|久久久国产精品免费=a片|奇米影视7777|八戒理论片午影院无码爱恋|国产91视频免费看|国产精品久久久久久久不卡 | 草草成人|精品综合视频|国产精品推荐精品|美国久久久久久|b=aoyu168成人免费视频|成人毛片网 | 亚洲精品无码成人=a片|国产美女口爆吞精普通话|国产精品国产三级国产专播i12|91精品国产一区自在线拍|日韩特级|成人在线免费观看小视频 | 8050午夜一级毛片|欧洲熟妇精品视频|亚洲在线视频网站|天天久久精品视频|亚洲综合在线网址|麻豆极品JK丝袜自慰喷水久久 | 日韩在线永久免费播放|动漫无遮羞肉体在线观看免费|国产色情精品一区二区|在线亚洲综合欧美网站首页|69精品久久久久久久|日韩区国产区 国精产品999一区二区三区有限|日韩毛片|成人免费看片又大又黄|麻豆出品视频在线|4438全国成人免费|青草视频精品 | 青青久草视频在线|波多野结衣中文字幕一区二区|美女天天操|日韩成人午夜视频|91中文字幕网|99久视频 | 久久久久高潮毛片免费全部播放|精品国产一区二区三区久久狼黑人|7878视频在线观看|国产日韩精品视频一区二区三区|#NAME?|91p九色成人 | zzijzzij亚洲日本少妇jizjiz|日韩精品在线视频播放|欧美亚洲黄色片|99久久国产福利自产拍|日韩人妻潮喷中文在线视频|亚洲精品字幕在线观看 | 奇米影视超碰在线|亚洲第一中文字幕|欧美精品片|欧美日韩精品网站|亚洲熟妇色XXXXX欧美老妇Y|正在播放国产真实哭都没用 | 国产精彩免费视频|国产91亚洲精品一区二区三区|特黄男女交性=a片激情视频|日韩精品一二三四|www毛片|wwwxxxxx国产 | 搡女人真爽免费视频网站波兰美女|蜜臀99|多男一女一级淫片免费播放口|日本精品不卡|特级毛片=a级毛片免费观看R|免费成人精品视频 | 国产精品久久国产三级国不卡顿|2021国内精品久久久久精免费|天天舔天天插|2021国产在线观看不卡视频|久久久久国色=a∨免费看|伊人国产精品视频 | 铠甲勇士全52集免费播放|饥渴丰满少妇大力进入|免费女人高潮流视频在线观看|欧美国产国产综合|麻豆tv在线观看|男人操女人的免费视频 | 日本三级精品视频|国产人妻人伦精品无码|国产毛片久久久久久|奇米网首页|亚洲精品久久久打桩机小说|欧美一区二区三区成人 | 久久综合婷婷|中文日产幕无线码一二|77777五月色婷婷丁香视频在线|粉嫩=av久久一区二区三区小说|亚洲成人网络|亚洲色欲色欲77777小说 | 精品久久久蜜桃|天堂亚洲|久久精品女|蜜臀久久精品久久久更新时间|日韩精品一区二区在线播放|九九视频免费在线观看 | 岛国片在线播放97|欧美成人精品一级在线观看|久久99精品久久久久久久|一区二区三区影院|国产=a久|成人一区久久 | 国产=av熟女一区二三区灾密臀|黄色片在线播放|欧美人与牲口杂交视频在线|偷偷操任你操|69式视频免费观看|久久综合狠狠色综合伊人 | 99久久成人精品国产网站|九九在线|亚洲播播|快射视频在线观看|日本毛片在线|国产高清无码视频在线观看 国产精品二区影院|久久99热精品|一级黄片毛片免费|sihu在线|亚洲精品女|99vv1com这只有精品 | 国产成人毛片在线视频|视频在线播放|91福利在线看|国产亚洲无|天堂一区二区三区在线|日韩精品一卡 | 秋霞国产精品一区二区|无遮无挡非常色的视频免费|日韩不卡一卡二卡3卡四卡网站|在线高清国语成人网站|2020天天干夜夜爽|国产99视频精品免费专区 | wwww.黄|久久久国产99久久国产久一|欧美经典一区|免费高清在线视频观看|中文字幕99|性按摩xxxx | 偷看农村女人做爰毛片色|亚洲成人=av在线播放|国内视频一区|国产三级黄色|久久色亚洲|91精选国产 | 女人一区|午夜成人毛片免费观看蜜桔视频|高清无码不用播放器=av|91性网|无码一区二区|一区二区三区三州在线观看视频 | 国外精品视频在线观看免费|永夜星河免费观看|成人精品=av一区二区三区|老湿机香蕉久久久久久|日本=a级无毛|热久久一区 | 亚洲另类在线视频|6精品国产乱码久久久久久|欧美黄色=av|日本高清视频网址|草草网站影院白丝内射|成人免费=a级毛片无码片 HD性丰满白嫩白嫩少妇=aV|免费成人黄色大片|久久精品中文字幕|久久无码国产专区精品|欧美=a∨|91精品一久久香蕉国产线看观看软件 | 国产精品久久久精品|jj视频在线观看|中文字幕xxxx|淫片专区|草逼免费视频|久久久久久久久久久久国产精品 | 国产精品卡1卡2卡3|色八网站首页|潜行者40集免费观看视频|国产精品国产三级国产传播|小嫩妇下面好紧好爽视频|亚洲综合精品伊人久久 | 一区二区三区视频免费看|久久爱伊人|日本大尺度吃奶做爰久久久绯色|日韩精品视频免费在线观看|亚洲系列一区中文字幕|天堂视频一区二区 | 午夜国产在线|国产人妻无码一区二区三区婷婷|中文字幕免费在线看|2021国产麻豆剧传媒精品入口|日日射夜夜|免费久久99精品国产 | 香蕉成人=av|九九视频这里有精品|美女黄频|99热播精品|日本亚洲欧美|免费=av高清 | 龙珠z国语版普通话免费播放|人妻阿敏被老外玩弄系列|久久露脸国语精品国产91|国产成人午夜精品影院观看视频|91视频一区二区|国产高清露脸孕妇系列 | 日本三区|又大又黄又粗高潮免费|国产成年女人免费视频播放=a|国产美女视频国产视视频|欧美成综合|国产成人=av一区二区三区 | ch=aopeng在线观看|成人综合区一区|#NAME?|无遮挡又色又刺激的女人视频|#NAME?|日韩精品乱码=av一区二区 | 日韩人妻无码精品=a片免费不卡|国产亚洲综合99久久系列|国产影视精品一区二区三区|午夜理论片一级毛片免费|亚洲,国产,欧美在线|久久曰视频 |