如何 mock 数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何 mock 数据相关的知识,希望对你有一定的参考价值。

参考技术A 1.安装Node.js ,通过http-server开启本地服务器
获取端口 http://localhost:8000
然后通过在文件夹创建 html和json 文件来测试数据
示例:

我们打开浏览器的控制台就能看到输出的数据

2.通过线上来mock数据

以第一种为例,进入网站后建立个人项目
进入项目后通过创建接口

选择接口类型

进行查看

控制台结果

Vue 开发实战实战篇 # 35:如何高效地使用Mock数据进行开发

说明

【Vue 开发实战】学习笔记。

效果

我们通过 mock 数据来进行开发,比如下面的图表数据来自我们的 mock 数据调用接口 http://localhost:8080/api/dashboard/chart?id=kaimo313

安装依赖

npm install --save axios

编写 mock

新建 ant-design-vue-pro\\mock\\dashboard_chart.js 文件

let random = require("lodash/random");

function chart(method) 
    let res = null;
    switch (method) 
        case "GET":
            res = [...new Array(6)].map(() => random(100));
            break;
        default:
            res = null;
    
    return res;


module.exports = chart;

使用 mock 数据

我们在 ant-design-vue-pro\\src\\views\\Dashboard\\Analysis.vue 组件里使用

<template>
    <div>
        <Chart :option="chartOption" style="width: 600px; height: 400px;"/>
    </div>
</template>

<script>
import Chart from "@/components/Chart.vue";
import axios from "axios";
export default 
    data() 
        return 
            chartOption: 
        
    ,
    components: 
        Chart
    ,
    mounted() 
        this.getChartData();
        this.interval = setInterval(() => 
            this.getChartData();
        , 3000);
    ,
    beforeDestroy() 
        clearInterval(this.interval);
    ,
    methods: 
        getChartData() 
            axios.get("/api/dashboard/chart", 
                params: 
                    id: "kaimo313"
                
            ).then(response => 
                this.chartOption = 
                    title: 
                        text: 'ECharts 入门示例'
                    ,
                    tooltip: ,
                    legend: 
                        data: ['销量']
                    ,
                    xAxis: 
                        data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
                    ,
                    yAxis: ,
                    series: [
                        
                            name: '销量',
                            type: 'bar',
                            data: response.data
                        
                    ]
                
            )
        
    ,
;
</script>

<style></style>

vue.config.js 配置

module.exports = 
    lintOnSave: false,
    css: 
        loaderOptions: 
            less: 
                javascriptEnabled: true
            ,
        
    ,
    devServer: 
        proxy: 
            // '@(/api)':  target: 'http://localhost:3000',
            '/api': 
                target: 'http://localhost:8080',
                bypass: function (req, res, proxyOptions) 
                    if (req.headers.accept.indexOf('html') !== -1) 
                        console.log('Skipping proxy for browser request.');
                        return '/index.html';
                     else 
                        // 将请求url转为文件名
                        const name = req.path.split("/api/")[1].split("/").join("_");
                        const mock = require(`./mock/$name`);
                        const result = mock(req.method);
                        // 需要清除缓存
                        delete require.cache[require.resolve(`./mock/$name`)];
                        return res.send(result);
                    
                ,
            ,
        ,
    ,

配置参考

https://webpack.docschina.org/configuration/dev-server/#devserverproxy

注意

需要清除缓存,不然每次都是一样的数据,可以看这个状态是否是 304。

以上是关于如何 mock 数据的主要内容,如果未能解决你的问题,请参考以下文章

java 如何mock参数

Vue 开发实战实战篇 # 35:如何高效地使用Mock数据进行开发

前端该如何优雅地Mock数据

antd pro中如何使用mock数据,以及与服务端进行交互

vue本地开发mock数据.md

前端技术之:如何Mock GraphQL接口数据