美文网首页小程序
小程序网络请求的封装(一):引入model分页面思想

小程序网络请求的封装(一):引入model分页面思想

作者: 程序员三千_ | 来源:发表于2019-02-13 18:10 被阅读24次

    文件夹目录:


    一、http基类http.js


    import { config } from '../config.js'

    class HTTP {

      request(params) {

        // url, data, method,

        if (!params.method) {

          params.method = "POST"

        }

        wx.request({

          url: config.api_base_url + params.url,

          method: params.method,

          data: params.data,

          header: {

            "Content-Type": "application/x-www-form-urlencoded;text/html; charset=utf-8"

          },

          success: (res) => {

            let code = res.data.result

            if (code == "0000") {

              params.success && params.success(res.data)

            }

            else {

              this._show_error(res.data.msg)

            }

          },

          fail: (err) => {

            this._show_error("无法访问服务器");

          }

        })

      }

      _show_error(msg) {

        wx.showToast({

          title: msg,

          icon: 'none',

          duration: 2000

        })

      }

    }

    export { HTTP }


    二、配置类config.js


    const config = {

      api_base_url: 'https://www.xxxxx.com/server/',

    }

    export {config }


    三、具体网络请求类test.js


    import {

      HTTP

    } from '../util/http.js'

    class TestModel extends HTTP {

      getTest(code, providerId, providerKey, sCallback) {

        this.request({

          url: 'getXXX.htm',

          // method: 'POST',

          data: {

            code: code,

            providerId: providerId,

            providerKey: providerKey

          },

          success: (res) => {

            sCallback(res)

          }

        })

      }

    }

    export {

      TestModel

    }


    四、page页面调用


    import {

      TestModel

    } from '../../models/test.js'

    const testModel = new TestModel()

    Page({

      /**

      * 页面的初始数据

      */

      data: {

      },

      /**

      * 生命周期函数--监听页面加载

      */

      onLoad: function (options) {

        testModel.getTest("param1", "param2", "param3", (res) => {

          console.log("datat==",res);

        })

      },


    model分页面思想:

    例如我们有一个页面test,这时我们会新建一个对应这个页面的model,把test这个页面所有的网络请求都写在这个model里,如果页面要用到网络请求的话,就先import这个model,再new一个这个model的对象const testModel = new TestModel(),最后就可以用  testModel.getTest()的形式,调用网络请求了。

    这样的model分页面思想,在我们代码维护的时候更方便,例如我们想找某个页面的所有网络请求,就可以一目了然,便于查找,也把业务逻辑都分到了model里面,让页面看起来更简洁,便于代码维护。

    相关文章

      网友评论

        本文标题:小程序网络请求的封装(一):引入model分页面思想

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