美文网首页前端技术汇总让前端飞互联网科技
Mockjs,再也不用追着后端小伙伴要接口了

Mockjs,再也不用追着后端小伙伴要接口了

作者: 魔力老钱 | 来源:发表于2017-04-28 15:16 被阅读2002次

相信大家都存在这样的一个困扰,在前后端分离的大环境下,
前端需要后端的接口去完成页面的渲染,
但是大部分的情况下,前后端需要同时进行开发,
这种情况下,后端还没完成数据输出,前端只好写静态模拟数据。

那么问题就来了

  • 数据太长了,将数据写在js文件里,完成后挨个改url。

  • 某些逻辑复杂的代码,加入或去除模拟数据时得小心翼翼。

  • 想要尽可能还原真实的数据,要么编写更多代码,要么手动修改模
    拟数据。

  • 特殊的格式,例如IP,随机数,图片,地址,需要去收集。


前几天看到mock.js的一些介绍,然后自己写了个案列跑起来了,发现还是比较实用的,所以这边整理出文章,推荐给大家

mock案例-github地址

1.mock是什么?

mock官网

mock官网介绍截图

2.mock可以模拟哪些数据?

  • string
  • number
  • bool
  • array
  • object
  • guid
  • id
  • title
  • paragraph
  • image
  • address
  • date
  • time
  • url
  • email
  • ip
  • regexp

mock示例文档

直接附上代码

// 使用 Mock
let Mock = require('mockjs');
Mock.mock('http://1.json','get',{
    // 属性 list 的值是一个数组,其中含有 1 到 3 个元素
    'list|1-3': [{
        // 属性 sid 是一个自增数,起始值为 1,每次增 1
        'sid|+1': 1,
        // 属性 userId 是一个5位的随机码
        'userId|5': '',
        // 属性 sex 是一个bool值
        "sex|1-2": true,
        // 属性 city对象 是对象值中2-4个的值
        "city|2-4": {
            "110000": "北京市",
            "120000": "天津市",
            "130000": "河北省",
            "140000": "山西省"
        },
        //属性 grade 是数组当中的一个值
        "grade|1": [
            "1年级",
            "2年级",
            "3年级"
        ],
        //属性 guid 是唯一机器码
        'guid': '@guid',
        //属性 id 是随机id
        'id': '@id',
        //属性 title 是一个随机长度的标题
        'title': '@title()',
        //属性 paragraph 是一个随机长度的段落
        'paragraph': '@cparagraph',
        //属性 image 是一个随机图片 参数分别为size, background, text
        'image': "@image('200x100', '#4A7BF7', 'Hello')",
        //属性 address 是一个随机地址
        'address': '@county(true)',
        //属性 date 是一个yyyy-MM-dd 的随机日期
        'date': '@date("yyyy-MM-dd")',
        //属性 time 是一个 size, background, text 的随机时间
        'time': '@time("HH:mm:ss")',
        //属性 url 是一个随机的url
        'url': '@url',
        //属性 email 是一个随机email
        'email': '@email',
        //属性 ip 是一个随机ip
        'ip': '@ip',
        //属性 regexp 是一个正则表达式匹配到的值 如aA1
        'regexp': /[a-z][A-Z][0-9]/,
    }]
})

3.如何拦截ajax请求

mock文档

Mock.mock( rurl, rtype, template )
 
如 Mock.mock('1.json','get',{
   'sid|+1': 1,
} )
记录数据模板。当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,
将根据数据模板 template 生成模拟数据,并作为响应数据返回。

注:从 1.0 开始,Mock.js 通过覆盖和模拟原生 XMLHttpRequest 的行为来拦截 Ajax 请求,不再依赖于第三方 Ajax 工具库(例如 jQuery、Zepto 等)。

4.案例代码

mock案例-github地址

用webpack 搭建了一个环境,mock文件里面放入跟后端定义好的接口模型和配置入口文件 引入需要的mock.js 文件

process.env.NODE_ENV=='mock' && require('./mock/1.js');
process.env.NODE_ENV=='mock' && require('./mock/2.js');
var $ = require('jquery');
$(function () {
    /**
     * 请求1 get 请求
     */
    $.ajax({
        url: 'http://1.json',
        type: 'get'
    }).done(function(data,status){
        console.log('我是请求1'+data)
    })

    /**
     * 请求2 post 请求
     */
    $.ajax({
        url: 'http://2.json',
        type: 'post'
    }).done(function(data,status){
        console.log('我是请求2'+data)
    })
})
项目截图

5. 如何在后端接口完成的时候,取消mock数据

new webpack.DefinePlugin({
       'process.env': {
            NODE_ENV: '"mock"'
       }
}),
process.env.NODE_ENV=='mock' && require('./mock/1.js');
process.env.NODE_ENV=='mock' && require('./mock/2.js');

根据webpack环境,在需要mock的时候,配置环境为mock,
在不需要mock的时候,只需要修改node_env 环境就可以了
无需注释代码,就可以完美解决后端接口还没完成的情况。

相关文章

  • Mockjs,再也不用追着后端小伙伴要接口了

    相信大家都存在这样的一个困扰,在前后端分离的大环境下,前端需要后端的接口去完成页面的渲染,但是大部分的情况下,前后...

  • VUE项目中使用MOCK

    自从有了mockjs,我们前端工程师再也不用等后端人员开发好之后再测数据了,因为mockjs可以拦截ajax请求,...

  • vue 使用 mock超级简单

    自从有了mockjs,我们前端工程师再也不用等后端人员开发好之后再测数据了,因为mockjs可以拦截ajax请求,...

  • 2019-11-28

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

  • 小程序中使用Mock数据

    介绍 Mock.js生成随机数据,拦截 Ajax 请求 前端使用mockjs后,对后端接口进行请求时,mockjs...

  • Vue中使用mockjs

    介绍 Mock.js生成随机数据,拦截 Ajax 请求 前端使用mockjs后,对后端接口进行请求时,mockjs...

  • 前端虚拟接口mockJs的接入

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

  • [技术探索]前端实现后端数据模拟的几种方法

    1.0 MockJs Mock官网案例 用法简单:符合直觉的接口。 前后端分离:让前端攻城师独立于后端进行开发。 ...

  • vue+mockjs 模拟数据,实现前后端分离开发

    vue+mockjs 模拟数据,实现前后端分离开发总结起来就是在后端接口没有开发完成之前,前端可以用已有的接口文档...

  • 前端使用mockjs模拟数据

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

网友评论

本文标题:Mockjs,再也不用追着后端小伙伴要接口了

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