美文网首页mockjs
Vue2 :Mockjs 前端模拟假数据

Vue2 :Mockjs 前端模拟假数据

作者: 恬雅过客 | 来源:发表于2018-05-19 12:18 被阅读315次

在前后端分离的大环境下,前端需要后端的接口去完成页面的渲染,但是大部分的情况下,前后端需要同时进行开发,这种情况下,后端还没完成数据输出,前端只好写静态模拟数据。面临一些问题:数据太长了,将数据写在js文件里,完成后挨个改url;某些逻辑复杂的代码,加入或去除模拟数据时得小心翼翼;想要尽可能还原真实的数据,要么编写更多代码,要么手动修改模拟数据;特殊的格式,例如IP,随机数,图片,地址,需要去收集等等。
Mock.js 正是这样一款类库,可以帮我们模拟生成一堆数据,也能解决那些问题。

安装

mock官网
npm安装:npm install mockjs
package文件中显示当前mockjs版本说明安装成功。
(也可以引入cdn:<script src="http://mockjs.com/dist/mock.js"></script>)

mockjs 文件

在main.js同级下建立mock.js文件:

// 引入mockjs
const Mock = require('mockjs');
const qs = require('qs');
// 获取 mock.Random 对象
const Random = Mock.Random;

// 登录
const login = function() {
  let status = false;//登录状态:ture--成功,false--失败
  status = true;
  return {
    status: status
  }
}
// 表格分页
const tblList = function(param) {
  param = param.body || '';//获取传过来的参数
  // console.log(qs.parse(param));//因为axios的post带参数被qs.stringfy()转换了,需要转回来。
    if(param == ''){
      //无查询条件
    let bookdata = Mock.mock({
      'books|1-10': [{
        'sid|+1': 1,
        'date': '@date("yyyy-MM-dd")',
        'name': '@csentence()',
        'address': '@county(true)',
        'region': '双流区'
      }]
    });
    // console.log(bookdata);
    return bookdata;

  }else{
      //带查询条件
    let paramObj = qs.parse(param);
    console.log('input parameter:...');
    console.log(paramObj);
    let books = [];
    for (let i = 0; i < 10; i++) {
      let newBook = {
        // thumbnail_pic_s: Random.dataImage('300x250', 'mock的图片'), // Random.dataImage( size, text ) 生成一段随机的 Base64 图片编码
        date: Random.date(),
        name: paramObj.name+Random.csentence(),
        address: Random.county(true),
        region: paramObj.region
      }
      books.push(newBook)
    }
    return {
      books: books
    }
  }

}
//图书列表
const bookList = function(param) {
  param = param.body || '';//获取传过来的参数
  // console.log(qs.parse(param));
  // 因为axios的post带参数被qs.stringfy()转换了,需要转回来。
  let paramObj = qs.parse(param);
  console.log(paramObj);
  let nameInput = paramObj.name || '';
  let books = [];
  for (let i = 0; i < 10; i++) {
    let temp = i+1;
    let newBook = {
      sid: temp,
      // thumbnail_pic_s: Random.dataImage('300x250', 'mock的图片'), // Random.dataImage( size, text ) 生成一段随机的 Base64 图片编码
      author: Random.name(2,4),
      name: '《'+nameInput+Random.csentence()+"》",
      publishAt: Random.date(),
      description: Random.cparagraph()
    }
    books.push(newBook)
  }
  return {
    books: books
  }
}
//获取文件列表
const fileList = function (param) {
  param = param.body || '';//获取传过来的参数
  // console.log(qs.parse(param));
  // 因为axios的post带参数被qs.stringfy()转换了,需要转回来。
  let paramObj = qs.parse(param);
  console.log(paramObj);
  let files = [];
  for (let i = 0; i < 3; i++) {
    let newFile = {
      name: paramObj.username + i +'.png',
      url: Random.dataImage('300x250', 'mock的图片'), // Random.dataImage( size, text ) 生成一段随机的 Base64 图片编码
    }
    files.push(newFile)
  }
  return {
    fileList: files
  }
}

// Mock.mock( url, post/get , 返回的数据);
Mock.mock('/mk_login', 'post', login);// 登录
Mock.mock('/mk_tbllist', 'post', tblList);// 表格分页
Mock.mock('/mk_booklist', 'post',bookList);// 图书列表
Mock.mock('/mk_fileupload', 'post',{});// 文件上传
Mock.mock('/mk_fetchFiles', 'post',fileList);// 获取文件列表

main.js 引入mock

在main.js中引入mock文件:
require('./mock');

使用

vue文件中访问该接口mock:
(调用的url接口和mock.js文件的Mock.mock( url, post/get , 返回的数据)的url接口一致,就能被mock拦截。)

api.post('/mk_login', data)
              .then(res => {
                console.log(res.data);
                if(res.data.status){
                  // 登录成功
                  this.setUserInfo2(data);
                  this.$router.replace('/home');
                }
              })
              .catch(error => {
                console.log("login异常:")
                console.log(error)
              })

参考

相关文章

  • Vue2 :Mockjs 前端模拟假数据

    在前后端分离的大环境下,前端需要后端的接口去完成页面的渲染,但是大部分的情况下,前后端需要同时进行开发,这种情况下...

  • 前端虚拟接口mockJs的接入

    标签(空格分隔): mockjs 模拟接口数据 前后端分离开发 序 前端模拟接口数据的方式,大概分为以下...

  • Mockjs在前端H5中的实践

    Mockjs Mock.js[http://mockjs.com/] 是一款模拟数据生成器,旨在帮助前端攻城师独立...

  • Mockjs ( 模拟数据 ) 快速入门

    mockjs 根据规则生成随机数据, 通过拦截ajax 请求实现 模拟前端数据接口 安装 主要模块 mock根据数...

  • 前端使用mockjs模拟数据

    前后端分离的开发模式已经很成熟了,前端不再依赖后端接口,独立进行开发,今天写一下关于mockjs模拟数据的使用方法...

  • gulp +mockjs模拟前端数据

    一.强烈推荐这个静态服务器browser-sync 1.browser-sync的使用 browser-sync的...

  • vue中如何使用mockjs摸拟接口的各种数据

    mockjs的作用 生成模拟数据 模拟 Ajax 请求,返回模拟数据 基于 HTML 模板生成模拟数据(后续更新)...

  • 2019-11-28

    关于mockjs模拟数据的使用 一、 本文主要结合webpack+vue+mockjs,前后端分离,模拟后端接口数...

  • 在项目中使用mockjs

    一、了解mockjs 前言:mockjs是什么 生成随机数据,拦截 Ajax 请求。 通过随机数据,模拟各种场景;...

  • mockjs

    是什么 MockJs 很好的解决了以下这些问题: 前端可以随机的生成静态模拟数据 尽可能还原真实的数据模型 拥有了...

网友评论

    本文标题:Vue2 :Mockjs 前端模拟假数据

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