玩转前端之模拟数据

是否还在为前端模拟数据头疼?

是否还在为后端返回数据格式较多内心烦躁?

是否还想吸一支烟压压精?

看下去吧,这里比心理医生还管用。。。

1.满地拉屎版

function fetchUserList() {

}

var isDev = true;

var data = {
    "status": 3,
    "message": "hello world",
    "string": "★★★",
    "number": 69,
    "boolean": true,
    "object": {
        "110000": "北京市",
        "120000": "天津市",
        "130000": "黑龙江省"
    },
    "array": [
        {
            "name": "Hello"
        },
        {
            "name": "Mock.js"
        },
        {
            "name": "!"
        },
        {
            "name": "Hello"
        },
        {
            "name": "Mock.js"
        },
        {
            "name": "!"
        }
    ],
    "regexp": "6288712123-",
    "time": "2014-01-16 21:21:22",
    "color": "rgba(121, 242, 135, 0.94)",
    "word": "jztuqwmur",
    "text": "而风气究及。",
    "name": "崔杰",
    "url": "news://imkpjsnq.ev/dhthtrgqy"
};

if (isDev) {
    fetchUserList(data);
} else {
    $.ajax({
        url: ‘/list‘,
        type: ‘GET‘,
        dataType: ‘json‘,
        success: function(data) {
            fetchUserList(data);
        }
    });
}

这段代码很好理解,如果你看不懂就不要往下看了,洗个澡睡觉休息吧!

有人会问了,看似很有条理的代码为什么叫满地拉屎呢?

让我告诉你这个data变量就是一坨屎。。。

在开发的时候我们会定义一个data来模拟后端返回的数据来进行下一步操作,如果这个data很长占满了整个屏幕,那你敲代码的时候上下翻来翻去是不是觉得很累。

这是其次,再一个就是当你联调把isDev改成了false的时候,有没有想到这个data有多孤单,自己在内存里游离,占着茅坑不拉屎。。。

那么你会说干脆把data和多余的判断代码删掉吧,我觉得这倒是可以,但是如果开发的程序前后端交互较多,你会觉得删起来挺不爽的,万一脑血栓犯了把有用的代码删掉了怎么办。。。

2.擦屁股高阶版

开发目录下创建一个json文件

添加json数据

{
  "status": 3,
  "message": "hello world",
  "string": "★★★",
  "number": 69,
  "boolean": true,
  "object": {
    "110000": "北京市",
    "120000": "天津市",
    "130000": "黑龙江省"
  },
  "array": [
    {
      "name": "Hello"
    },
    {
      "name": "Mock.js"
    },
    {
      "name": "!"
    },
    {
      "name": "Hello"
    },
    {
      "name": "Mock.js"
    },
    {
      "name": "!"
    }
  ],
  "regexp": "6288712123-",
  "time": "2014-01-16 21:21:22",
  "color": "rgba(121, 242, 135, 0.94)",
  "word": "jztuqwmur",
  "text": "而风气究及。",
  "name": "崔杰",
  "url": "news://imkpjsnq.ev/dhthtrgqy"
}

ajax请求路径填写该文件地址

$.ajax({
    url: ‘data/list.json‘,
    type: ‘GET‘,
    dataType: ‘json‘,
    success: function(data) {
        console.log(data);
    }
});

这样联调的时候只要把url改掉即可,看似很不错了,但是这个与满地拉屎版有一个共同点,数据不够灵活。

当你获取的数据有状态判断的话,怎么办,例如status这个key,你每次都得改这个value来对状态进行区分,好烦啊word哥!

3.强行装逼版

使用mock.js吧!一个模拟数据和编写自动化测试的库,目前github上1684个星也算不错了。

github:https://github.com/nuysoft/Mock

主页: http://mockjs.com/

中文的,文档通俗易懂,自己去看吧。。。

例子:

开发目录下创建一个js文件存放mock代码

html引入mock.js和data/list.js文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript" src="./jquery.js"></script>
    <script type="text/javascript" src="./mock.js"></script>
    <script type="text/javascript" src="./data/list.js"></script>
    <script type="text/javascript" src="./main.js"></script>
</head>
<body>

</body>
</html>

编写main.js

$.ajax({
    url: ‘/list‘,
    type: ‘GET‘,
    dataType: ‘json‘,
    success: function(data) {
        fetchUserList(data);
    }
});

编写data/list.js,模拟数据都写在这里,便于维护。

Mock.mock(‘/list‘, {
    "status|0-5": 0,
    "message": "hello world",
    "string|1-10": "★",
    "number|1-100": 100,
    "boolean|1-2": true,
    "object|2-4": {
        "110000": "北京市",
        "120000": "天津市",
        "130000": "黑龙江省",
        "140000": "四川省"
    },
    "array|1-10": [
        {
            "name|+1": [
                "Hello",
                "Mock.js",
                "!"
            ]
        }
    ],
    "regexp|1-5": /\d{5,10}\-/,
    "time": ‘@datetime‘,
    "color": ‘@rgba‘,
    "word": ‘@word‘,
    "text": ‘@csentence(5)‘,
    "name": ‘@cname‘,
    "url": ‘@url‘
});

当前后端联调的时候只需要把mock.js和data/list.js删掉就好了,main.js里的代码一点都不用动噢兄弟们!这他妈多爽啊!!!

来让我们秀秀数据吧

{
    "status": 4,
    "message": "hello world",
    "string": "★",
    "number": 98,
    "boolean": false,
    "object": {
        "110000": "北京市",
        "120000": "天津市",
        "130000": "黑龙江省"
    },
    "array": [
        {
            "name": "Hello"
        },
        {
            "name": "Mock.js"
        },
        {
            "name": "!"
        },
        {
            "name": "Hello"
        },
        {
            "name": "Mock.js"
        },
        {
            "name": "!"
        },
        {
            "name": "Hello"
        },
        {
            "name": "Mock.js"
        },
        {
            "name": "!"
        }
    ],
    "regexp": "241330-30881228-2632266897-",
    "time": "2009-06-19 01:55:07",
    "color": "rgba(242, 121, 165, 0.96)",
    "word": "bry",
    "text": "接看九统利。",
    "name": "谢杰",
    "url": "news://vykj.ag/frvlwkf"
}
{
    "status": 1,
    "message": "hello world",
    "string": "★★★★★★★★★★",
    "number": 86,
    "boolean": true,
    "object": {
        "120000": "天津市",
        "130000": "黑龙江省"
    },
    "array": [
        {
            "name": "Hello"
        },
        {
            "name": "Mock.js"
        }
    ],
    "regexp": "083728849-3321101-067657-",
    "time": "2013-02-24 17:29:08",
    "color": "rgba(158, 242, 121, 0.83)",
    "word": "smutjy",
    "text": "中往列军部。",
    "name": "田勇",
    "url": "rlogin://mmpooew.bw/kcuijlnk"
}

注:mock的第一个参数必须要与ajax请求的路径相同,并且get和post请求都可以进行匹配,数据足够灵活,应该能模拟99.9999%的情况了。

不过在我看来这个mock.js还不够完美,其有两个致命缺陷:

1.无法匹配带参数的ajax请求。

2.兼容性不够强。

时间: 2024-08-04 20:43:15

玩转前端之模拟数据的相关文章

前端模拟数据生成器

摘要: ?随着用户体验的重要性越来越高,目前前端和后台的解耦已经越来越明显了,这也加大了前后端的配合工作.在前端开发过程中可能我们需要一些后台返回的数据来完成交互效果,但是后台开发人员并没有完成后台功能,此时我们只能等,但是这样必然影响了开发进度,浪费了时间.有很多种解决方法,如果后端解决的话,那就是先定义接口,然后将假数据直接返回.如果在前端解决的话,前端搭建自己的服务,不依赖后端.作为前端工程师,今天我分享下另一种前端解决方案,mock服务. 简介: Mock.js 是一款模拟数据生成器,旨

Mock.js 与 fiddler 前端模拟数据与拦截请求

最近 工作需要  接触了Mock.js. Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试.提供了以下模拟功能: 根据数据模板生成模拟数据 模拟 Ajax 请求,生成并返回模拟数据 基于 HTML 模板生成模拟数据 http://mockjs.com/ 什么入门之类的 看官网就会~~~ Fiddler   web调试利器 便于我们调试前后端数据等. Fiddler是一个web调试代理.它能够记录所有客户端和服务器间的http请求,允许你监视,设置断点,

mockjs学习总结(方便前端模拟数据,加快开发效率)

  基本介绍: 在我们前端开发中经常遇到这样的事情,接口没有写好,只能写静态页面,如何才能用很简单的方法模拟后端数据呢?mockjs就干了这件事,而且干的还挺好. 下面是我作为初学者的一些总结经验,期望和小伙伴们一起交流进步. 实现的功能有:1.基于数据模板 生成模拟数据   2.基于html模板 生成数据    3.拦截并模拟ajax请求 安装: 一.安装(需要安装nodejs) node: npm install mockjs bower: npm install -g bower bowe

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

在项目中尝试了mockjs,mock数据,实现前后端分离开发. 关于mockjs,官网描述的是 1.前后端分离 2.不需要修改既有代码,就可以拦截 Ajax 请求,返回模拟的响应数据. 3.数据类型丰富 4.通过随机数据,模拟各种场景. 等等优点. 总结起来就是在后端接口没有开发完成之前,前端可以用已有的接口文档,在真实的请求上拦截ajax,并根据mockjs的mock数据的规则,模拟真实接口返回的数据,并将随机的模拟数据返回参与相应的数据交互处理,这样真正实现了前后台的分离开发. 与以往的自己

使用express, create-react-app, mongodb搭建react模拟数据开发环境

提要 最近刚刚完成了一个vue的项目,其中涉及的用户数有6000多个以及其他数据也比较多,为了在前端能够真实的进行数据模拟,所有把全量数据拷贝下来放到了api.json中.这样导致整个api.json文件过大,每次进行修改的时候编辑器都会卡顿. 项目做完后就在想能不能把大量的模拟数据放在数据库中进行管理,用nodejs来操作数据库.顺便再熟练一下nodejs. 使用的技术栈 express 是nodejs当前最流行的后台框架.官网对express的描述,它是一个机遇Node.js平台,快 速.开

App开发如何利用Fidder,在api接口还没有实现的情况下模拟数据,继续开发

相信app开发很多时候,都是等后台出接口,拿到数据调试错误.殊不知,我们完全可以不用等,只要有约定好的接口定义文档,借助工具就能做到,自己模拟数据返回~      下面主要是在项目组开发过程中,使用Fidder,摸索总结的经验之谈.     一.初步介绍及前期准备 1.抓包工具简介 抓包工具有很多,以下列一下最常用的几个工具别简单介绍下 firebug:web最常用的调试工具,但是对于分析http请求的详细信息,不够强大.模拟http请求的功能也不够,且firebug常常是需要“无刷新修改”,如

lazy-mock ,一个生成后端模拟数据的懒人工具

lazy-mock ??lazy-mock 是基于koa2构建的,使用lowdb持久化数据到JSON文件.只需要简单的配置就可以实现和json-server差不多的功能,但是比json-server更加灵活,后期可配置性更强,完全可以模拟真实后端业务逻辑. ??lazy-mock默认包含了jwt实现的登录与登出,实现了基于RBAC模型的通用权限控制逻辑.具体可查看vue-quasar-admin. Clone git clone https://github.com/wjkang/lazy-mo

mock.js模拟数据

一.mock解决的问题 开发时,后端还没完成数据输出,前端只好写静态模拟数据.数据太长了,将数据写在js文件里,完成后挨个改url.某些逻辑复杂的代码,加入或去除模拟数据时得小心翼翼.想要尽可能还原真实的数据,要么编写更多代码,要么手动修改模拟数据.特殊的格式,例如IP,随机数,图片,地址,需要去收集 二.mock优点 1.前后端分离 让前端工程师独立于后端进行开发. 2.增加测试的真实性 通过随机数据,模拟各种场景. 3.开发无侵入 不需要修改既有代码,就可以拦截Ajax请求,返回模拟的响应数

前后端分离-模拟数据之RAP2快速入门

是啥? RAP是一个可视化接口管理工具 通过分析接口结构,动态生成模拟数据,校验真实接口正确性, 围绕接口定义,通过一系列自动化工具提升我们的协作效率.我们的口号:提高效率,回家吃晚饭! 可视化编辑,完善的版本控制,各种格式的导入导出.让前后端约定接口的工作变得十分简单 RAP会自动根据接口文档生成Mock接口,这些接口会自动生成模拟数据,支持复杂的生成逻辑. 为啥? 在前端开发过程中,我们需要实时与后端进行数据交互.然而大多数时候,前端开发都是在没有后端数据提供的情况下进行的,这时我们就需要用