当前位置: 首页 > news >正文

前端模拟数据生成器

摘要:

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

简介:

  Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能

  • 根据数据模板生成模拟数据
  • 模拟 Ajax 请求,生成并返回模拟数据
  • 基于 HTML 模板生成模拟数据

例子:

mock.js

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html">
 5     </head>
 6     <body>
 7         <script src="http://cdn.staticfile.org/jquery/2.0.0/jquery.min.js"></script>
 8         <script src="http://mockjs.com/dist/mock.js"></script>
 9         <script>
10             Mock.mock(/\.json/, 'get', function(options) {
11                 var url = options.url;
12                 var data = url.substring(url.indexOf('?')+1);
13                 return data;
14             });
15 
16 
17             Mock.mock(/\.json/, 'post', function(options) {
18                 return options.data;
19             });
20 
21 
22             $.ajax({
23                 url: 'mock.json',
24                 dataType: 'json',
25                 type: 'get',
26                 data: {
27                     test: 'test'
28                 }
29             })
30             .done(function (data, status, jqXHR) {
31                 $('<pre>').text(data)
32                     .appendTo('body');
33             });            
34         </script>
35     </body>
36 </html>

 

apitizer.js

 1 <!DOCTYPE html>
 2 <html>
 3     <head>
 4         <meta http-equiv="Content-Type" content="text/html">
 5     </head>
 6     <body>
 7         <script src="http://cdn.staticfile.org/jquery/2.0.0/jquery.min.js"></script>
 8         <script src="./apitizer-master/apitizer.min.js"></script>
 9         <script>
10         var schema = {
11             type : "object",
12             properties : {
13                 id : {
14                     type : "integer"
15                 },
16                 username : {
17                     type : "string"
18                 },
19                 password : {
20                     type : "string"
21                 }
22             }
23         }, userStore;
24 
25         apitizer.addSchema('user', schema);
26         userStore = apitizer.schemaStore('user', 0, {
27             id : apitizer.types.autoincrement()
28         })
29 
30         userStore.add({
31             username : 'retro',
32             password : {
33                 a: 'a',
34                 b: 'b'
35             }
36         });
37 
38         apitizer.fixture('POST /login', function(params){
39             var users = userStore.db(params) // Search the data in the store's database
40             if(users.count() === 0){
41                 throw {errors: ['Wrong credentials'], status: 401}
42             } else {
43                 return users.first();
44             }
45         });
46 
47         $.post('/login', {
48             username : 'asf',
49             password : 1338
50         }).then(function(data){
51             $('<pre>').text(JSON.stringify(data, null, 4))
52             .appendTo('body');
53         }, function(error){
54 
55         });
56 
57         
58         </script>
59     </body>
60 </html>

 

PS:

    mock.js:http://mockjs.com/

    apitizer.js:https://github.com/retro/apitizer

相关文章:

  • cocos2dx 2.x 在ios8下clippingNode不起作用 解决办法
  • Docker 生态
  • Ant命令行操作
  • go 类型转换
  • c#运用TreeView控件的树形视图显示数据库中数据
  • 第二届互联网安全责任论坛举办泛娱乐安全成关注焦点
  • mysql查看表结构命令
  • jQuery on() 方法
  • MacAir苹果本(2013AJ7629)安装win7单系统的曲折经历
  • mysql数据库的备份与恢复(附测试截图)
  • MongoDB的常用用法
  • 【分割平面,分割空间类题】【HDU1290 HDU2050】
  • 【原创】PostgreSQL 实现阶乘方法列举
  • mysql创建远程帐号
  • Access restriction: The type FtpClient is not acce
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • java中的hashCode
  • Mysql数据库的条件查询语句
  • MySQL主从复制读写分离及奇怪的问题
  • React as a UI Runtime(五、列表)
  • Vue组件定义
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 深入 Nginx 之配置篇
  • 思维导图—你不知道的JavaScript中卷
  • 微服务入门【系列视频课程】
  • 我看到的前端
  • 小试R空间处理新库sf
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 从如何停掉 Promise 链说起
  • #pragma data_seg 共享数据区(转)
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (a /b)*c的值
  • (C++)八皇后问题
  • (windows2012共享文件夹和防火墙设置
  • (分布式缓存)Redis分片集群
  • (分享)自己整理的一些简单awk实用语句
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot家庭财务分析系统 毕业设计641323
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (五)网络优化与超参数选择--九五小庞
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转)用.Net的File控件上传文件的解决方案
  • .net 4.0发布后不能正常显示图片问题
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 调用php,php 调用.net com组件 --
  • .NET简谈设计模式之(单件模式)
  • .NET企业级应用架构设计系列之技术选型
  • .NET轻量级ORM组件Dapper葵花宝典
  • /boot 内存空间不够
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [ACM] hdu 1201 18岁生日