广告
返回顶部
首页 > 资讯 > 精选 >提高微信小程序开发效率的方法
  • 207
分享到

提高微信小程序开发效率的方法

2023-06-14 12:06:49 207人浏览 安东尼
摘要

小编给大家分享一下提高微信小程序开发效率的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序小结  在接触的微信小程序开发过程中,不难发现微信小程序为了

小编给大家分享一下提高微信小程序开发效率的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

微信小程序小结

  在接触的微信小程序开发过程中,不难发现微信小程序为了方便开发人员入手对很多底层api进行了很好的封装,比如针对接口请求的wx.request(),针对路由跳转和页面导航的wx.switchTab、wx.navigateTo···等。虽然在一定程度上简化了开发,但是对于项目工程的系统化构建还是不够的,因此本人在对比以前基于Vue开发项目的经验和自身的开发习惯,总结出如下3点可供参考:

  • 全局变量和配置信息统一管理;

  • 封装路由守卫相关api:vue-routerrouter.beforeEach()router.afterEach()真的香;

  • 接口请求公共信息进一步提取封装;

  • 封装接口的请求和响应拦截api:axiOSaxios.interceptors.request.use()axios.interceptors.response.use()用过的都说好;

从上述四点出发,对微信小程序初始化工程进行规范优化,能够很大程度提高开发效率和进行项目维护管理。封装的好处不只体现在调用的方便上,也体现在管理的方便上,同时,公共操作集中处理,很大程度减少繁杂重复代码。

一、项目初始化

   新建微信小程序项目,在项目下新建如下目录和文件:

  • config文件夹:统一管理可配置的信息和变量;

    • erroList.js:接口报错错误码匹配列表文件;

    • globalData.js:全局变量统一管理文件(相当于vuex);

    • keys.js:可配置系统信息管理文件(全局常量命名等);

  • pages文件夹:小程序页面文件管理文件夹(每个页面一个子文件夹目录);

  • router文件夹:路由管理文件件;

    • router.js:对微信小程序5种路由导航api的封装;

    • routerConfig.js:页面路由名称和路径匹配配置文件;

    • routerFilter.js:路由前置拦截封装;

  • servers文件件:接口请求服务管理文件夹;

    • request.js:对wx.requestPromise封装;

    • xxx.js:对应模块的接口管理文件;

    • apis文件夹:request请求封装管理和接口api配置管理文件夹;

    • requestFilter.js:接口请求和响应拦截封装文件;

  • 其他都是初始化默认文件;

提高微信小程序开发效率的方法

二、路由跳转和路由守卫封装

1、路由跳转封装

  微信小程序官方文档为开发者提供了5种路由跳转的api,每一种都有其特殊的用法:

提高微信小程序开发效率的方法

  根据其用法,我们对路由api进行如下封装:微信小程序路由跳转最后对应push、replace、pop、relaunch、switchTabroutes对应routeConfig.js中路由路径的配置;routerFilter对应routerFilter.js文件,对路由跳转之前的逻辑进行处理;

routeConfig.js(每次新增页面后需要手动添加):
export const routes =   {    INDEX: "/pages/index/index",    TEST: "/pages/test/test",  }export default {...routes};
routerFilter.js:
export default () => {  ···  //路由跳转前逻辑处理}
router.js(routerFilter负责路由跳转前公共操作处理,在success和fail中对路由跳转后的公共操作进行处理):
import routes from "../router/routerConfig";import routerFilter from "./routerFilter"const push = (path, params, events) => {  routerFilter()  wx.navigateTo({    url: routes[path] + `?query=${JSON.stringify(params)}`,    events: events,    success(res) {      console.log(res);    },    fail(err) {      console.log(err);    }  })}const replace = (path, params) => {  routerFilter()  wx.redirectTo({    url: routes[path] + `?query=${JSON.stringify(params)}`,    success(res) {      console.log(res);    },    fail(err) {      console.log(err);    }  })}const pop = (number) => {  routerFilter()  wx.navigateBack({    delta: number,    success(res) {      console.log(res);    },    fail(err) {      console.log(err);    }  })}const relaunch = (path, params) => {  routerFilter()  wx.reLaunch({    url: routes[path] + `?query=${JSON.stringify(params)}`,    success(res) {      console.log(res);    },    fail(err) {      console.log(err);    }  })}const switchTab = (path) => {  routerFilter()  wx.switchTab({    url: routes[path],    success(res) {      console.log(res);    },    fail(err) {      console.log(err);    }  })}module.exports = {  push,  replace,  pop,  relaunch,  switchTab}

2、全局注册和使用

app.js中对封装的路由api进行全局注册:

import router  from "./router/router.js"//全局注册wx.router = router

在页面逻辑中使用:

//index页面跳转test页面 GotoTest(){   wx.router.push("TEST")}

三、接口请求Promise封装

  对于同一个项目而言,微信小程序apiwx.request()中很多参数都是相同的,如果直接使用,需要将这些重复参数一遍又一遍的copy,虽然copy很简单,但是当有一个参数改变了需要找到所有接口一个一个修改,维护起来费劲,再者看着也难受呀;

提高微信小程序开发效率的方法

  借鉴axios对请求的封装,将wx.request()封装为Promise形式岂不美哉:

request.js:
import fORMatError from "../requestFilter"const app = getApp()const request = (method, url, data) => {  //设置请求头  const header = {    ···  }  //promise封装一层,使得调用的时候直接用then和catch接收  return new Promise((resolve, reject) => {    wx.request({      method: method,      url: app.globalData.host + url, //完整的host      data: data,      header: header,      success(res) {        //对成功返回的请求进行数据管理和统一逻辑操作        ···        resolve(res.data)      },      fail(err) {        wx.showToast({          title: '网络异常,稍后再试!',          mask: true,          icon: 'none',          duration: 3000        })      }    })  })}export default request;
具体使用

以user.js为例:

import request from "./request";// 获取用户openidexport const usrInfos = data => request("POST", "/user/usrInfos", data);

index页面调用:

//index.js//获取应用实例const app = getApp()import { usrInfos } from "../../servers/apis/user"Page({  onLoad: function () {    //获取用户信息    usrInfos({      uid: "xxxx"    })      .then(res => {        console.log(res)      })      .catch(err => {        console.log(err)      })  }})

四、接口的请求和响应拦截封装

  axiosaxios.interceptors.request.use()axios.interceptors.response.use()分别对应接口请求前的拦截处理和数据响应后的拦截处理;根据这个原理我们对微信小程序的响应也做拦截封装,对接口请求返回错误进行统一管理输出:

request.js
import formatError from "../requestFilter"const app = getApp()···const request = (method, url, data) => {  ···  return new Promise((resolve, reject) => {    wx.request({      ···      success(res) {        //对成功返回的请求进行数据管理和统一逻辑操作        if(res.statusCode === 200){ //请求返回成功          if(res.data && res.data.code === "SUCCESS"){ //后端对接口请求处理成功,返回数据给接口调用处            resolve(res.data)  //then接收          }else{//后端对也请求判断后认为不合逻辑报错            formatError(res)   //统一的报错处理逻辑            reject(res.data) //catch接收          }         }else{          reject(res.data)//catch接收        }      },      fail(err) {//请求不通报错        wx.showToast({          title: '网络异常,稍后再试!',          mask: true,          icon: 'none',          duration: 3000        })      }    })  })}export default request;
requestFilter.js

requestFilter.js中可以做很多对报错的处理,这里用一个简单的toast处理示范下:

const formatError = (err =>{  wx.showToast({    title: err.message,    mask: false,    icon: 'none',    duration: 3000  })}export default formatError;

对报错进行统一处理需要明确数据规:

  • 制定统一的报错码管理规范;

  • 制定前后端统一的接口请求数据返回格式;

五、全局数据管理

  对于数据的管理在小项目的开发中显得不那么重要,但是随着项目越来越大,数据越来越多,一个很好的数据管理方案能够有效地避免很多bug,这也是vuex能够在vue生态中占有一席之地的原因。秉承着合理管理数据的原则,对于该封装的数据坚决封装,对于该分模块管理的配置坚决分块管理:

globalData.js

微信小程序中全局的数据管理放在app.jsglobalData属性中,当数据太多或者app.js逻辑太复杂时,将全局数据提取出来单独管理的确是个好方案:

export default {  ···  host: "Http://www.wawow.xyz/api/test", //接口请求的域名和接口前缀   hasConfirm: "" //是否已经有了confirm实例  currentPage: ""  ···}
keys.js

keys.js属于个人开发中的习惯操作,将项目中可能用到的一些常量名称在此集中管理起来,十分方便调用和修改维护:

export default {  ···  TOKEN: "token",  STORAGEITEM: "test"  ···}
全局引用和注册

引入app.js:

import router  from "./router/router.js"import keys from "./config/keys"import globalData from "./config/globalData"//全局注册wx.router = routerwx.$KEYS = keys//app.jsApp({  //监听小程序初始化  onLaunch(options) {    //获取小程序初始进入的页面信息    let launchInfos = wx.getLaunchOptionsSync()    //将当前页面路由存入全局的数据管理中    this.globalData.currentPage = launchInfos.path  },  ···  //全局数据存储  globalData: globalData})
使用

在页面代码逻辑中可以通过app.globalData.hostwx.$KEYS.TOKEN方式进行调用;

以上是“提高微信小程序开发效率的方法”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 提高微信小程序开发效率的方法

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

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

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

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

下载Word文档
猜你喜欢
  • 提高微信小程序开发效率的方法
    小编给大家分享一下提高微信小程序开发效率的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序小结  在接触的微信小程序开发过程中,不难发现微信小程序为了...
    99+
    2023-06-14
  • 微信小程序的开发方法
    本篇内容主要讲解“微信小程序的开发方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序的开发方法”吧!1、准备工作用没有注册过微信公众平台的邮箱注册一个微信公众号, 申请帐号 , 根据指...
    99+
    2023-06-29
  • 微信小程序提高转化率的方法是什么
    这篇文章主要介绍“微信小程序提高转化率的方法是什么”,在日常操作中,相信很多人在微信小程序提高转化率的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序提高转化率的方法是什么”的疑惑有所帮助!...
    99+
    2023-06-26
  • 微信小程序打包插件开发的方法
    今天小编给大家分享一下微信小程序打包插件开发的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如果你看过文档,相信你一定知...
    99+
    2023-06-26
  • 微信小程序第三方开发平台接入的方法
    本文小编为大家详细介绍“微信小程序第三方开发平台接入的方法”,内容详细,步骤清晰,细节处理妥当,希望这篇“微信小程序第三方开发平台接入的方法”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。微信第三方平台开发接入授权...
    99+
    2023-06-26
  • 微信小程序开发的技巧
    这篇文章主要介绍微信小程序开发的技巧,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!注意:本文默认开发者对微信小程序开发有一定语法基础。小程序开发文档相关免费学习推荐:微信小程序开发微信小程序小结  在接触的微信小程序...
    99+
    2023-06-14
  • 微信小程序怎么开发自己的小程序?
    现在很多人都想要开发自己的微信小程序,却不知道通过什么方式进行开发,那么关于微信小程序怎么开发自己的小程序,下面给大家讲解一下。 微信小程序怎么开发自己的小程序有哪些方式?可大致分为: 自己开发,要编程写代码,需要懂代码知识 下载代码模板...
    99+
    2023-10-03
    小程序 微信小程序 微信
  • 微信小程序开发之获取用户信息的两种方法
    今天介绍两种微信小程序获取用户信息的方法 第一中直接授权获取(在同一页面之中): 首先在微信程序一个页面的WXML文件写入获取用户信息的按钮 <!-- bindTap用于绑定事...
    99+
    2022-11-13
  • 微信小程序开发之用户授权登录的方法
    这篇文章将为大家详细讲解有关微信小程序开发之用户授权登录的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。准备:微信开发者工具下载地址:https://developers.weixin.qq.com/...
    99+
    2023-06-14
  • Python 开发者的微信小程序开发实践
    微信小程序作为一种轻量级的应用形式,在移动互联网领域取得了极大的成功。 作为 Python 开发者,如何在微信小程序的开发中发挥 Python 的优势?本文将为你展示如何从零开始搭建一个基于 Python 的微信小程序项目,包含详细的解决...
    99+
    2023-09-03
    微信小程序 python 小程序
  • 提高 Python 开发效率的3个小工具
    目录在SublimeText中支持Python运行在Mac系统的iTerm2中支持查看图片Python中的typing模块介绍 本文将介绍的三个小工具如下: 在Sublime Tex...
    99+
    2022-11-12
  • 微信小程序运营的方法
    这篇文章主要介绍了微信小程序运营的方法的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序运营的方法文章都会有所收获,下面我们一起来看看吧。  1、装饰打造  用一个例子来说明,比如一家服装店。某服装店为了...
    99+
    2023-06-26
  • 微信小程序注册的方法
    这篇文章主要介绍“微信小程序注册的方法”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序注册的方法”文章能帮助大家解决问题。方式一:通过微信公众号(已认证的企业类型)快速注册快速注册认证小程序...
    99+
    2023-06-26
  • 教你用Type Hint提高Python程序开发效率
    简介 Type Hint(或者叫做PEP-484)提供了一种针对Python程序的类型标注标准。 为什么使用Type Hint?对于动态语言而言,常常出现的情况是当你写了一段代码后,隔段时间你可能忘记这个方...
    99+
    2022-06-04
    程序开发 教你用 效率
  • 微信小程序开发中如何封装HTTP请求方法
    这篇文章主要介绍微信小程序开发中如何封装HTTP请求方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!HTTP请求方法的封装在小程序中http请求是很频繁的,但每次都打出wx.req...
    99+
    2022-10-19
  • Python编程算法:如何提高开发效率?
    Python是一门广泛使用的编程语言,它的简洁和可读性使其成为开发人员的首选语言之一。但是,即使是Python也需要正确的算法和编程习惯来提高开发效率。在本文中,我们将探讨如何通过Python编程算法来提高开发效率。 使用Python内置...
    99+
    2023-06-28
    编程算法 开发技术 git
  • Android开发微信小程序路由跳转方式
    目录官方文档路由跳转的两种形式标签形式js形式快速总结小程序路由跳转1.1 wx.switchTab(Object object)1.2 wx.reLaunch(Object obj...
    99+
    2022-11-13
  • PHP中的微信小程序开发指南
    随着微信小程序在移动应用市场中的普及,许多开发者开始探索如何使用PHP语言来实现微信小程序的开发。本文将为大家提供一份PHP中的微信小程序开发指南,旨在帮助PHP开发者更好地了解和应用微信小程序开发技术。1.微信小程序简介微信小程序是一种基...
    99+
    2023-05-24
    PHP 微信小程序 开发指南。
  • 在程序的开发中PHP如何提高程序的运行效率
    在程序的开发中PHP提高程序运行效率的方法:1.查询语句中尽量不使用select *。2.需要查什么数据用对应的字段,减少查询内容。3.少用子查询可用表连接代替。4.少用模糊查询。5.在数据表中创建索引。6.对程序中经常用到的数据生成缓存。...
    99+
    2022-10-05
  • 使用Git、NPM、NumPy提高Java开发效率的方法
    随着Java开发的不断发展,开发者们也在不断寻找提高开发效率的方法。在这篇文章中,我们将介绍三种工具——Git、NPM、NumPy,它们可以让Java开发更加高效。 Git:版本控制工具 Git是一款分布式版本控制工具,它可以帮助团队协作...
    99+
    2023-10-28
    git npm numy
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作