阅读目录

  • 玩转前端之模拟数据

回到目录

玩转前端之模拟数据

博客园主页:http://www.cnblogs.com/handoing/

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

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

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

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

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.兼容性不够强(这个不重要,因为我们只会在开发环境中用到)。

前端之模拟数据 - HackerVirus - 博客园相关推荐

  1. Splinter学习--模拟攥写博客园随笔

    为了验证Splinter的多种动作,这里将使用Splinter模拟博客园里面新增随笔的操作. 第一步:登录博客园,方法同Splinter学习--初探2,模拟博客园登录 第二步:跳转到"添加随 ...

  2. import json java_JAVA的JSON数据包装-博客园老牛大讲

    标签: 一.什么是json呢? { "id":"1", "username":"老牛大讲堂", "passwo ...

  3. 前端“智能”静态资源管理 - Onebox - 博客园

    前端"智能"静态资源管理 模块化/组件化开发,仅仅描述了一种开发理念,也可以认为是一种开发规范,倘若你认可这规范,对它的分治策略产生了共鸣,那我们就可以继续聊聊它的具体实现了. 很 ...

  4. mysql是大端小端_大端和小端 - HackerVirus - 博客园

    在计算机中是以字节为单位,每个地址对应一个字节,一个字节8bit.在C中,除了8bit的char以外,还有16bit的short,32位的int,64位long,当然具体要由编译器决定,可以通过siz ...

  5. 『Python开发实战菜鸟教程』实战篇:爬虫快速入门——统计分析CSDN与博客园博客阅读数据

    文章目录 0x01:引子 首先介绍一下网络爬虫是什么,可以用来做什么? 这里简单探讨一下网络爬虫的合法性 正式进入爬虫实战前,需要我们了解下网页结构 HTML CSS JScript 写一个简单的 H ...

  6. iOS_CNBlog项目开发 (基于博客园api开发) 上篇

    按照惯例, 先上效果图 前言 做这个项目是因为刚好在逛博客园的时候看到一篇文章 博客园第三方客户端-i博客园正式发布App Store, 这里就帮忙贴下链接吧. 整个项目做下来大概做了半个月, 今天算 ...

  7. java 模拟登陆exe_Java简单模拟登陆和爬虫实例---博客园老牛大讲堂

    鉴于有人说讲的不清楚,我这里再详细补充一下:更新日期:2017-11-23 本片文章适合初学者,只简单说了一下爬虫怎么用,和一个简单的小实例.不适合你的就可以不看了.----博客园老牛大讲堂 1.什么 ...

  8. 【转】使用C#发送Http 请求实现模拟登陆(以博客园为例)

    [转]使用C#发送Http 请求实现模拟登陆(以博客园为例) 模拟登陆的原理很简单,就是发送一个Http 请求服务器获得响应,然后客户端获取到cookie即可实现模拟登陆,比如一些抢票软件的原理无非也 ...

  9. python爬虫:两种方法模拟登录博客园

    第一方法用第三方库(requests):参考http://www.mamicode.com/info-detail-1839685.html 源代码分析 博客园的登录页面非常简单,查看网页源代码,可以 ...

最新文章

  1. Eclipse-Java代码规范和质量检查插件-SonarLint
  2. ip代理服务器软件25探索云速捷_IP代理在实际使用过程中会面临的问题,如何准确挑选和使用代理IP...
  3. 【Ovirt 笔记】JBoss modules 配置分析与整理
  4. 分类系列之感知器学习算法PLA 和 口袋算法Pocket Algorithm
  5. 如何查看 ToggleStatusComponent 是否是 SAP Spartacus public API 一部分
  6. Jmeter操作mysql数据库测试
  7. matlab自动排版,工具方法| Matlab 简单绘图与排版
  8. ThinkPHP admin.php后台登录
  9. anaconda安装python3.7、jupyter_Anaconda3 Python 3 和 2 in Jupyter Notebook共存方法
  10. Linux内存初始化(四) 创建系统内存地址映射
  11. [2019杭电多校第二场][hdu6602]Longest Subarray(线段树)
  12. 靠java_人生靠反省,Java靠泛型
  13. 模拟美萍加密狗--Rockey2虚拟狗(一)
  14. 利用VBB仿真——实现摇杆控制流水灯
  15. Hadoop系列五之版本差别
  16. 自比毕加索,揭秘神秘的“苹果大学”
  17. 产品经理与工程师的换位思考
  18. ACL访问控制列表(访问控制、抓取感兴趣流)详解及基本ACL和高级ACL的配置。
  19. OPenGL笔记--创建三维图形(立方体)
  20. 2020年 初赛真题

热门文章

  1. 一篇文章普及各种ios基本知识(防止奸商忽悠、鉴别假冒翻新机、知识入门必备)
  2. asp向不同的用户发送信息_【asp.net core 系列】 1 带你了解一下asp.net core
  3. matlab教程点语言,编程语言 / Matlab教程_电脑教程学习网( 5 )
  4. vue axios 发送get请求传递参数给后端失败_Java之Vue插件之Axios
  5. flip java_java的flip(). 这里用flip()有什么作用?这是反转缓冲区的方法,好像用不上。...
  6. python flask上传文件_Python-Flask-文件上传
  7. iOS手势操作简介(三)
  8. ファイルアップロード関連のjQueryプラグイン10攻略
  9. C#入门详解(14)
  10. POJ2777(线段树裸题)