iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >mpvue开发小程序的难点有哪些
  • 817
分享到

mpvue开发小程序的难点有哪些

2023-06-26 08:06:22 817人浏览 安东尼
摘要

今天小编给大家分享一下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的同学都或多或少猜到了一些坑,我也是踩到了不少的坑浪费了不少的宝贵时间,下面就是我在本次小程序开发过程中遇到的坑(们)以及针对它们的解决方案:

### 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:

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()// 定义公共headersconst 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>复制代码

以上就是“mpvue开发小程序的难点有哪些”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

--结束END--

本文标题: mpvue开发小程序的难点有哪些

本文链接: https://www.lsjlt.com/news/308297.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • mpvue开发小程序的难点有哪些
    今天小编给大家分享一下mpvue开发小程序的难点有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。框架的选择原生的小程序我...
    99+
    2023-06-26
  • mpvue开发小程序遇到的问题有哪些及怎么解决
    本篇内容介绍了“mpvue开发小程序遇到的问题有哪些及怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!项目结构 |---bu...
    99+
    2023-06-26
  • mpvue如何开发微信小程序
    这篇文章主要介绍mpvue如何开发微信小程序,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、mpvue简介mpvue 是一个使用 Vue.js 开发小程序的前端框架。框架基于 Vu...
    99+
    2024-04-02
  • 开发微信小程序有哪些优点
    这篇“开发微信小程序有哪些优点”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“开发微信小程序有哪些优点”文章吧。微信小程序使用...
    99+
    2023-06-27
  • mpvue如何开发音频类小程序
    这篇文章主要为大家展示了“mpvue如何开发音频类小程序”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“mpvue如何开发音频类小程序”这篇文章吧。这是我第一次开...
    99+
    2024-04-02
  • 怎么用mpvue开发微信小程序
    这篇文章主要讲解了“怎么用mpvue开发微信小程序”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用mpvue开发微信小程序”吧!一、mpvue简介mpvue 是一个使用 Vue.js 开...
    99+
    2023-07-04
  • 社区买菜小程序开发有哪些特点
    今天小编给大家分享一下社区买菜小程序开发有哪些特点的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。  社区买菜小程序开发功能需...
    99+
    2023-06-26
  • 怎么使用mpvue开发微信小程序
    本篇内容介绍了“怎么使用mpvue开发微信小程序”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!小程序以离线包方式下载到本地,通过微信客户端载...
    99+
    2023-06-26
  • Android开发中遇到的难点有哪些
    在Android开发中,可能会遇到以下一些难点:1. 设备的碎片化:Android系统运行在众多不同品牌、不同型号的设备上,不同设备...
    99+
    2023-10-18
    Android
  • 小程序开发的重心有哪些
    今天小编给大家分享一下小程序开发的重心有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1,明确您的发展方向小程序开发的功...
    99+
    2023-06-27
  • 小程序开发的作用有哪些
    今天小编给大家分享一下小程序开发的作用有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。小程序开发用什么语言小程序是无需下...
    99+
    2023-06-27
  • 开发小程序的问题有哪些
    这篇文章主要介绍“开发小程序的问题有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“开发小程序的问题有哪些”文章能帮助大家解决问题。如何开发小程序?目前,主要有两种方法。 一种方法是自己开发,另一...
    99+
    2023-06-27
  • 开发小程序的方式有哪些
    本篇内容介绍了“开发小程序的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、小程序开发难不难?许多企业希望了解小程序开发的难易度...
    99+
    2023-06-27
  • 小程序的开发框架有哪些
    这篇文章主要介绍了小程序的开发框架有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇小程序的开发框架有哪些文章都会有所收获,下面我们一起来看看吧。小程序开发第三方框架特性官方框架MINA小程序提供的开发框架为...
    99+
    2023-06-26
  • 怎么用mpvue+koa+mongodb开发商城小程序
    本篇内容主要讲解“怎么用mpvue+koa+mongodb开发商城小程序”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用mpvue+koa+mongodb开发商城小程序”吧!技术栈前端: 微...
    99+
    2023-06-26
  • 模板小程序开发和定制小程序开发有哪些区别
    这篇文章主要介绍模板小程序开发和定制小程序开发有哪些区别,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!小程序开发一般分为2种,一种是模板小程序另一种是定制小程序。所谓“模板小程序”就是在一个综合的小程序平台上给你开通...
    99+
    2023-06-27
  • 餐厅点餐小程序开发的基础功能有哪些
    小编给大家分享一下餐厅点餐小程序开发的基础功能有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、餐厅点餐小程序开发功能分析 网上订单支付:点餐后,用户可以直接在线提交订单进行结算,直接通过微信支付进行结算。在线评价消...
    99+
    2023-06-27
  • 小程序的优点有哪些
    小程序的优点有:1.无需安装;2.开发门槛低;3.不占用储存空间;4.无需注册;5.传播能力强;小程序的优点有以下几点无需安装小程序不需要进行安装,随时可用,即用即走,可以提供用户良好的体验感。开发门槛低小程序的制作成本低,效率高,搭建小程...
    99+
    2024-04-02
  • 微信商城小程序开发注意要点有哪些
    这篇文章主要介绍微信商城小程序开发注意要点有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!⒈收货地址 这个问题,想起来就醉的不行!在开始静态布局的时候,费了大半天劲,把整个选择地址,创建地址(地图选址)...
    99+
    2023-06-26
  • 微信小程序开发文档tip有哪些知识点
    今天小编给大家分享一下微信小程序开发文档tip有哪些知识点的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。  微信在去年支持了...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作