美文网首页
wx.request()的三层调用封装

wx.request()的三层调用封装

作者: 小苗晓雪 | 来源:发表于2019-10-22 22:22 被阅读0次

    记录封装微信小程序的Http请求
    home.js调用theme,hs , theme调用http,js
    home.js

    // pages/home/home.js
    
    
    import {Theme} from "../../Model/theme";
    
    Page({
    
        /**
         * 页面的初始数据
         */
        data: {
            topTheme: null,
        },
    
        /**
         * 生命周期函数--监听页面加载
         */
        onLoad: function (options) {
            // callBack里拿到了回调成功的函数:
            Theme.getHomeLocationTheme((data) => {
                this.setData({
                    topTheme: data[0],
                })
            })
        },
    
    
        // 页面相关事件处理函数--监听用户下拉动作:
        onPullDownRefresh: function () {
    
        },
    
        // 页面上拉触底事件的处理函数:
        onReachBottom: function () {
    
        },
    
        // 用户点击右上角分享:
        onShareAppMessage: function () {
    
        }
    })
    

    theme.js

    //业务对象:
    // 要定义好一个一个的业务对象;
    // theme , banner , spu(商品) , sku(单品) , address , user等 , 这些都是最基本的业务对象;
    import {Http} from "../utils/http";
    
    // ctrl + option + 字母O 自动删除无效的引用
    /**
     *  主题业务对象类:
     */
    class Theme {
        // 封装顶部sale模块的网络请求:接收一个callBack回调函数
        static getHomeLocationTheme(callBack) {
            Http.request({
                url: `theme/by/names`,
                method:'GET',
                data: {
                    names: 't-1',
                },
                // 这边获取了实参data , 然后还要再传递出去:
                callBack: data =>{
                    callBack(data);
                }
            })
    
            /*
            // 不加大括弧的形式传参:
            Http.request(`theme/by/names` , 'GET' , {names:'t-1'} , data => {
                callBack(data);
            })
             */
        }
    }
    
    export {
        Theme,
    }
    

    http.js

    import {config} from "../Config/Config";
    
    class Http {
        // 这边在request的参数外层用{}包裹 , 这样在方法的实现的时候就可以像写JS对象的方式一样去书写代码了~
        static request({url , method = 'GET' , data , callBack}) {
            wx.request({
                url: `${config.apiBaseUrl}${url}`,
                method: method,
                data: data,
                header: {
                    appkey: config.appkey,
                },
                success(res) {
                    // 把请求成功后获取的数据传递出去:
                    callBack(res.data);
                }
            })
        }
    /*
        // 这种形参不加大括弧的在外部调用的时候就只能用传参的形式 , 如果加上大括弧就可以像JS传递对象的形式一样!
        static request(url, method = 'GET', data, callBack) {
            wx.request({
                url: `${config.apiBaseUrl}${url}`,
                method: method,
                data: data,
                header: {
                    appkey: config.appkey ,
                },
                success(res) {
                    callBack(res.data);
                }
            })
        }
    */
    }
    
    export {
        Http,
    }
    

    愿编程让这个世界更美好

    相关文章

      网友评论

          本文标题:wx.request()的三层调用封装

          本文链接:https://www.haomeiwen.com/subject/fewcvctx.html