美文网首页工具
uniapp 使用mock数据方式总结

uniapp 使用mock数据方式总结

作者: janezhang | 来源:发表于2019-12-25 14:16 被阅读0次

1.2019.12.25
uniapp使用了vue, 那开发环境 如何mockJS? 分为3个步骤
--- 通过封装uniapp的请求函数,然后劫持uniapp的请求。其中用到了装饰者函数。可以做到函数职责单一原则,不需要修改请求函数。
1.封装uniapp request: 如下:

function fetch({ 
    url,
    method = 'GET',
    data,
    showLoading = false,
    header = {
        'content-type': 'application/json'
    },
}) {
    if (showLoading) {
        uni.showLoading({
            mask: true
        });
    }
    if (method.toLowerCase() == 'post') {
        header['content-type'] = 'application/x-www-form-urlencoded'
    }
    return new Promise((resolve, reject) => {
        uni.request({
            url, //仅为示例,并非真实接口地址。
            header,
            data: {
                ...data,
                openid: uni.getStorageSync('openid') || '',
                language: uni.getStorageSync('language') || 'en'
            },
            method,
            success: (res) => {
                console.log(url, data, method, res);
                if (res.statusCode == 200) {
                    // if (res.data.status != 0) {
                    //  uni.showToast({
                    //      icon: "none",
                    //      title: res.data.msg,
                    //      duration: 2000
                    //  })
                    // }
                    resolve(res.data)
                    if (showLoading) {
                        uni.hideLoading();
                    }
                } else {
                    reject(res)
                }
            },
            error(err) {
                reject(err)
                uni.hideLoading();
            }
        });
    })

}

2.装饰者拦截请求:

Function.prototype.before = function( fn ){
    var self = this;
    return function(){
        let f = fn.apply( this, arguments );
        if( f ){
            console.log( arguments );
            let opt = arguments[0];
            let index = opt.url.lastIndexOf('/');
            var name = opt.url.substring(index+1);
            console.log(name);
            //这里mock返回, promise函数
            var url =` http://localhost:8080/${name}.json`;
            return mock(url);
        }
        return self.apply( this, arguments );
 
    }
}
function mock( url ){
    return uni.request({
        url: url, //仅为示例,并非真实接口地址。
        data: {
            text: new Date(),
        },
        method: 'GET',
        header: {
            'custom-header': 'hello' //自定义请求头信息
        }
    }).then( function( data ){
        return data[1].data;
    })
}
  1. 使用方式:
//若是开发环境则 是调用拦截,否则,将原来fetch原封不动,给到Vue.prototype.$fetch .
if( process.env && process.env.NODE_ENV === 'development'){
      // 这里调用拦截之前封装的fetch请求 fetch.before。
    Vue.prototype.$fetch = fetch.before( function(){
        return true;
    })
}else{
    Vue.prototype.$fetch = fetch
}

相关文章

  • uniapp 使用mock数据方式总结

    1.2019.12.25uniapp使用了vue, 那开发环境 如何mockJS? 分为3个步骤--- 通过封...

  • 使用 Mockjs 模拟数据

    Mock 数据 Mock 在 vue 中的使用 使用npm下载mock 2.使用 mock 在 mock 文件夹下...

  • axios的封装与请求

    引入下axios,然后对axios做下基本的封装。然后就是mock数据的方式说一下,以及在项目中使用的mock方式...

  • 【图文详解】如何mock数据

    目录 如何在本地通过静态服务器mock数据 如何使用Easy Mock 如何使用githubpages mock数...

  • antd table 数据动态表格

    数据动态表格 mock使用

  • 利用node.js来mock数据

    1.什么是mock数据? 模拟后端数据 2.mock数据解决的问题 使用mock数据可以在后端开发人员尚未完成接口...

  • mock

    mock使用优势:前后端同时开发的时候,后端接口数据没有出来,前端可以mock假数据,模拟开发 1,安装mock依...

  • (一)mock数据

    在html页面中使用mock.js 去请求数据 Mock.js

  • vue本地开发mock数据.md

    一、为什么要mock数据? 二、如何mock数据? 三、webpack本地代理配置 四、mockjs使用 五、ea...

  • vue项目代建遇坑总结

    webpack配置问题总结 1.mock数据的做法,看的项目是在webpack 1 的结构上做的mock数据。现在...

网友评论

    本文标题:uniapp 使用mock数据方式总结

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