Mock data模拟服务端返回数据

很早就想总结下关于mock data 这部分的内容,现在刚好把它总结一下吧。

首先之前完成的许多项目都是自己独立完成前端开发这部分内容的,不过要完成一个完整的包含后端的项目,臣妾做不到阿~~~~~~~(主要是时间也不允许哈哈)所以呢,这个时候mock data就发挥它的作用啦~

简单介绍下mock.js,是一款非常强大的插件,可以模拟服务端的数据,也可以进行增删改查这些操作。

小声bb:在实际项目开发过程中,后端完成接口一般较晚,而我们可以使用mock data来模拟数据,这样可以大大提高效率。

OK,接下来一起玩转mock吧!

第一步,当然是在项目中安装我们的mock插件,如图所示,这里的axios是为了可以模拟后台接口。


可以看到输入“npm install mockjs --save”的时候提示出错啦。

在我的环境中也安装了cnpm,在这里我重新输入“cnpm install mockjs --save”回车,没有错误,安装成功;接着安装了axios插件;

好的,安装成功。

第二步:建立如图所示的文件夹axios,并添加api.js文件;以及在components中添加mock.vue文件


创建文件夹+相关文件

第三步:修改main.js文件


修改main.js文件

第四步:mock.js

import Mock from 'mockjs' // 引入mockjs

const Random = Mock.Random // Mock.Random 是一个工具类,用于生成各种随机数据

let data = [] // 用于接受生成数据的数组

let size = [

  '300x250', '250x250', '240x400', '336x280',

  '180x150', '720x300', '468x60', '234x60',

  '88x31', '120x90', '120x60', '120x240',

  '125x125', '728x90', '160x600', '120x600',

  '300x600'

] // 定义随机值

for(let i = 0; i < 10; i ++) { // 可自定义生成的个数

  let template = {

    'Boolean': Random.boolean, // 可以生成基本数据类型

    'Natural': Random.natural(1, 10), // 生成1到100之间自然数

    'Integer': Random.integer(1, 100), // 生成1到100之间的整数

    'Float': Random.float(0, 100, 0, 5), // 生成0到100之间的浮点数,小数点后尾数为0到5位

    'Character': Random.character(), // 生成随机字符串,可加参数定义规则

    'String': Random.string(2, 10), // 生成2到10个字符之间的字符串

    'Range': Random.range(0, 10, 2), // 生成一个随机数组

    'Date': Random.date(), // 生成一个随机日期,可加参数定义日期格式

    'Image': Random.image(Random.size, '#02adea', 'Hello'), // Random.size表示将从size数据中任选一个数据

    'Color': Random.color(), // 生成一个颜色随机值

    'Paragraph':Random.paragraph(2, 5), //生成2至5个句子的文本

    'Name': Random.name(), // 生成姓名

    'Url': Random.url(), // 生成web地址

    'Address': Random.province() // 生成地址

  }

  data.push(template)

}

Mock.mock('/data/index', 'post', data) // 根据数据模板生成模拟数据

第五步:api.js

import axios from 'axios'

axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'

// 请求拦截器

axios.interceptors.request.use(function(config) {

    return config;

  }, function(error) {

    return Promise.reject(error);

  })

  // 响应拦截器

axios.interceptors.response.use(function(response) {

  return response;

}, function(error) {

  return Promise.reject(error);

})

// 封装axios的post请求

export function fetch(url, params) {

  return new Promise((resolve, reject) => {

    axios.post(url, params)

      .then(response => {

        resolve(response.data);

      })

      .catch((error) => {

        reject(error);

      })

  })

}

export default {

  mockdata(url, params) {

    return fetch(url, params);

  }

}

第六步:mock.vue
<template>

  <div>

  </div>

</template>

<script>

import api from './../axios/api.js'

export default {

  name: 'Mock',

  data () {

    return {

      dataShow: []

    }

  },

  created () {

    this.getdata()

  },

  methods: {

    getdata: function() {

      api.mockdata('/data/index')

      .then(res => {

        console.log(res);

        this.dataShow = res.data;

      })

    }

  }

}

</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->

<style scoped>

</style>

基本上就可以满足开发的需要了~~~~挖个坑得空再来补充+完善。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。