Vue项目中使用mockjs

前端页面写完后 接口可能出不来。所以就要用mock来造一些假数据。
使用前请安装mockjs
我们先在src下创建一个mock文件夹
在这里插入图片描述
在example.js里写

import Mock from 'mockjs'
const Random = Mock.Random
// mock例子1
var listData = function() {
    let data = []
    for (let i = 0; i < 20; i++) {
    let newList = { // 详细 规则 参照mockjs官网
      title: Random.csentence(5, 30), //  Random.csentence( min, max )
      imgSrc: Random.dataImage('200x160', '这是图片中的文本'), // Random.dataImage( size, text ) 生成图片(base64位数据格式)
      author_name: Random.cname(), // Random.cname() 随机生成中文名
      date: Random.date() + ' ' + Random.time() // Random.date()指示生成的日期字符串的格式,默认为yyyy-MM-dd;Random.time() 返回一个随机的时间字符串
    }
      data.push(newList)
  }
  return {data: data}
}
// mock例子2
var strings = {
  data: {"array|1-10": [
    {
      "name|+1": [
        "Hello",
        "Mock.js",
        "!"
      ]
    }
  ]}
}

const list = {
  listData,
  strings
}
export default list

然后在mock下的index.js文件里面引用

import Mock from 'mockjs'
import list from './example'

// url为要拦截的请求地址  请求方式  请求数据(规则) (此处api会被mockjs拦截)
// 控制台network里看不到请求 结果请console出来看
Mock.mock('http://mockjs.com', 'post', Mock.mock(list.listData))
Mock.mock('http://bai.com','post',Mock.mock(list.strings))

在api文件下的request.js文件封装请求

import axios from 'axios'
// 这里request根据你自己项目写
export function request(url, data = {}, method = 'post', download) {
    let token =  sessionStorage.getItem('token');
    let service;
    service = axios.create({
      headers: {
        'Content-Type': 'application/json',
        'X-Authorization':token?token:'',
      },
      timeout: 60000
    })
    return new Promise((resolve, reject) => {
      const options = {
        url,
        method
      };
      if(download){
        options.responseType="blob"
      }
      if (method.toLowerCase() === 'get') {
        options.params = data
      } else {
        options.data = data
      }
      service(options)
        .then(res => {//成功回调
          if(download){
            resolve(res);
          }else {
            resolve(res.data)
          }
        })
        .catch(error => {// 失败回调
          reject(error);
          if (error.response) {
            errorHandle(error.response);
          }else {

          }
        })
    })
}


export default { // 暴露htto_mock方法,即后面页面中用到的方法
    http_mock(url, params) {
        return request(url, params)
    }
}

在组件里调用方式

<template>
  <div v-title data-title="测试title">
    <button @click="logs">点击我</button>
  </div>
</template>

<script>
  export default {
    methods: {
      logs() {
         this.request.http_mock('http://bai.com').then(res => {
           console.log(res.data)
         })
      }
    },
  }
</script>

<style scoped>

</style>

控制台输出结果
在这里插入图片描述
main.js里引入
在这里插入图片描述

具体mock怎么造数据请看这个
http://mockjs.com/examples.html#Array

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值