uni-app请求方法封装⑦

文章目录

十一、请求方法封装

为了减少代码的冗余,优化代码的可读性,及可维护性,进行请求方法的封装

实现流程

一、定义公共的 http 请求方法
  1. 创建 http.js 文件,导出一个封装好的 promise 对象(内部进行 uniCloud 调用)
js 复制代码
export default ({ name, data = {} }) => {
    //name云函数的名字  data参数据
    /* 导出pormise对象 */
    return new Promise((resolve, reject) => {
        //开启loading弹窗
        uni.showLoading({})

        uniCloud.callFunction({
            name,
            success({ result }) {
                //成功的状态
                if (result.code === 0) {
                    //能够拿到数据值
                    resolve(result.data)
                } else {
                    //提示框,一般是后端没有查询到数据值
                    uni.showToast({ icon: 'none', title: result.msg })
                }
            },
            fail(err) {
                //请求失败,一般是网络的原因,后端的错误
                reject(err)
            },
            complete() {
                //完成的状态
                //关闭loading弹窗
                uni.hideLoading()
            },
        })
    })
}
二、创建接口文件进行公共方法的调用
三、方法挂载到 Vue 原型上,供每个界面进行使用
  1. 使用 webpacck 的 require.context 方法对所有的请求函数收集

require.context 是什么?

一个 webpack 的 api,通过执行 require.context 函数获取一个特定的上下文,主要用来实现自动化导入模块,在前端工程中,如果遇到从一个文件夹引入很多模块的情况,可以使用这个 api,它会遍历文件夹中的指定文件,然后自动导入,使得不需要每次显式的调用 import 导入模块

js 复制代码
/* 批量进行文件导出 */
// . =>API目录的相对路径
// true => 是否查询子目录
// /.js/ => 正则:需要查询的文件的后缀名

const requireApi = require.context(".", true, /.js$/);
console.log(requireApi.keys()); //如下图38
let module = {};

//requireApi.keys  所有请求页面路径的数组
requireApi.keys().forEach((key, index) => {
    //如果等本身就返回
    if (key === "./index.js") return;
    Object.assign(module, requireApi(key));
    //requireApi(key) 是每页面请求方法的名称对象--//如下图39
});

export default module;


  1. main.js 进行方法挂载
react 复制代码
import module from './ajax/api/index.js'
Vue.prototype.$http = module;
  • 例子:
js 复制代码
import App from "./App";
import module from "@/ajax/api/index.js";
Vue.prototype.$http = module;

// #ifndef VUE3
import Vue from "vue";

Vue.config.productionTip = false;
App.mpType = "app";

const app = new Vue({
    ...App,
});
app.$mount();

// #endif

// #ifdef VUE3
import { createSSRApp } from "vue";
export function createApp() {
    const app = createSSRApp(App);
    return {
    app,
    };
}
// #endif
四、页面/组件内部进行方法的调用
js 复制代码
async _intiLabelList() {
    const labelList = await this.$http.get_label_list()
    this.labelList = labelList
}
相关推荐
2501_915921434 分钟前
iOS混淆与IPA加固实战手记,如何构建苹果应用防反编译体系
android·macos·ios·小程序·uni-app·cocoa·iphone
Q_Q5110082852 小时前
python+uniapp基于微信小程序的学院设备报修系统
spring boot·python·微信小程序·django·flask·uni-app
ღ᭄ꦿ࿐Never say never꧂4 小时前
微信小程序 Button 组件 open-type 完全指南:从用户信息获取到客服分享的实战应用
spring boot·微信小程序·小程序·uni-app·vue3
你真的可爱呀6 小时前
uniapp学习【路由跳转 +数据请求+本地存储+常用组件】
前端·学习·uni-app
2501_9151063212 小时前
iOS 26 APP 性能测试实战攻略:多工具组合辅助方案
android·macos·ios·小程序·uni-app·cocoa·iphone
00后程序员张20 小时前
iOS混淆与IPA文件加固全流程实战 防止苹果应用被反编译的工程级方案
android·ios·小程序·https·uni-app·iphone·webview
草字21 小时前
uniapp 打开横竖屏。usb调试时可以横竖屏切换,但是打包发布后却不行?
java·前端·uni-app
2501_915106321 天前
iOS 应用加固与苹果软件混淆指南,如何防止 IPA 被反编译与二次打包?
android·ios·小程序·https·uni-app·iphone·webview
赵庆明老师1 天前
Uniapp微信小程序开发:全局变量的使用
微信小程序·小程序·uni-app
2501_915921431 天前
iOS 应用加固与苹果软件混淆全解析 IPA 文件防反编译、混淆加密与无源码加固策略
android·macos·ios·小程序·uni-app·cocoa·iphone