zoukankan      html  css  js  c++  java
  • 学习 | mockjs入门

      最近工作有用到mockjs模拟数据,实现前后端分离,今天系统的把mockjs的API都过了一遍,算是入门吧。

      

    什么是mockjs

    mockjs就是一个模拟数据,生成随机数据,拦截ajax请求。

    为什么使用mockjs

    1、后端给不了数据
    2、数据太长,将数据放在js文件里面,完成后挨个改url
    3、还原真实数据
    4、特殊格式 ip 随机数 图片 地址
    5、分页显示

    mockjs基本语法(require.js)

    参考index.html

    语法规则

    1、数据模板定义规范

    "name|rule":value 
    'name|min-max': value

    通过重复 string 生成一个字符串,重复次数大于等于 min,小于等于 max。

    'name|count': value

    通过重复 string 生成一个字符串,重复次数等于 count。

    'name|min-max.dmin-dmax': value

    生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dmin 到 dmax 位。

    'name|min-max.dcount': value

    生成一个浮点数,整数部分大于等于 min、小于等于 max,小数部分保留 dcount 位。

    'name|count.dmin-dmax': value

    生成一个浮点数,整数部分等于count,小数部分保留 dmin 到 dmax 位。

    'name|count.dcount': value

    生成一个浮点数,整数部分等于count,小数部分保留 dcount 位。

    'name|+1': value

    属性值自动加 1,初始值为 value

    'name|1': boolean

    属性值自动加 1,初始值为 value

    1、Mock.mock(template)

    根据数据模板生成模拟数据

    2、Mock.mock(rurl,template)

    当拦截到匹配 rurl 的 Ajax 请求时,将根据数据模板 template 生成模拟数据,并作为响应数据返回。

    3、Mock.mock( rurl, function( options ) )

    当拦截到匹配 rurl 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。

    4、Mock.mock( rurl, rtype, template )

    当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,将根据数据模板 template 生成模拟数据,并作为响应数据返回。

    5、Mock.mock( rurl, rtype, function( options ) )

    当拦截到匹配 rurl 和 rtype 的 Ajax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。

    6、Mock.setup( settings )

    配置拦截 Ajax 请求时的行为。支持的配置项有:timeout。

    7、占位符 Mock.Random

    Mock.Random 是一个工具类,用于生成各种随机数据

    8、自定义占位符 Mock.Random.extend({func});

    用于自定义占位符

    9、Mock.valid()

    校验真实数据 data 是否与数据模板 template 匹配。

     
    index.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <script src="./require.js"></script>
        <script>
          require.config({
              paths:{
                  zepto:"./zepto",
                  mock:"http://mockjs.com/dist/mock"
              }
          });
          require(["mock"],function(M){
               var data = M.mock({
                   'list|1-10':[{
                       'id|+1':1
                   }]
               })
               console.log(data);
          })
        </script>
    <body>
        
    </body>
    
    </html>
    index2.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <script src="./require.js"></script>
        <script>
          require.config({
              paths:{
                  zepto:"./zepto",
                  mock:"http://mockjs.com/dist/mock"
              }
          });
          require(["mock"],function(M){
               var data = M.mock({
                   'list1|1':/[a-z][A-Z][0-9]/,
                   'list2|1':/^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/,
                   'list3|1':/^(https?://)?([da-z.-]+).([a-z.]{2,6})([/w .-]*)*/?$/,
                   'list4|1':/((2[0-4]d|25[0-5]|[01]?dd?).){3}(2[0-4]d|25[0-5]|[01]?dd?)/,
               })
               console.log(data);
          })
        </script>
    <body>
        
    </body>
    
    </html>
    index3.html
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <script src="./require.js"></script>
        <script>
          require.config({
              paths:{
                  zepto:"./zepto",
                  mock:"http://mockjs.com/dist/mock"
              }
          });
          require(["zepto","mock"],function($,M){
               var temp = {
                   "title":"hejian",
    
                   "star|1-5":"*",
                   "count|5-9.2":1,
                   "like1|1-2":false,
                   "like2|1":true,
                   "obj1|2-4":{
                       "1":"北京",
                       "2":"上海",
                       "3":"杭州",
                       "4":"西安",
                   },
                   "obj2|2":{
                       "1":"安康",
                       "2":"宝鸡",
                       "3":"咸阳",
                       "4":"户县"
                   },
                   "array|1":["1","2","3","5"],
                   'function':function(){
                       return this.title;
                   }
               }
               var data = M.mock(temp);
    
               var temp2 = {
                   "list|1-10":[{
                       "id|+1":1,
                       'email':'@EMAIL'
                   }]
               }
               M.mock(/.json/,temp2);
               $.ajax({
                   url:"hello.json",
                   dataType:"json",
                   success:function(data){
                       console.log(data);
                   }
               })
    
               var func = function(options){
                   return options;
               }
               M.mock(/.json/,func);
               $.ajax({
                   url:"hello.json",
                   dataType:"json",
                   success:function(data){
                       console.log(data);
                   }
               })
               $.ajax({
                   url:"hello.json",
                   dataType:"json",
                   data:{
                       id:1,
                       name:"2"
                   },
                   success:function(data){
                       console.log(data);
                   }
               })
               $.ajax({
                   url:"hello.json",
                   type:"post",
                   success:function(data){
                       console.log(data);
                   }
               })
    
               M.mock(/.json/,'get',{
                   type:"get"
               });
               $.ajax({
                   url:"hello.json",
                   type:"post",
                   success:function(data){
                       console.log(data);
                   }
               })
               M.mock(/.json/,'get',function(options){
                   return options.type;
               })
               $.ajax({
                   url:"hello.json",
                   type:"get",
                   success:function(data){
                       console.log(data);
                   }
               })
               // M.setup({
               //     timeout:400,
               // })
               // $.ajax({
               //     url:"hello.json",
               //     timeout:400,
               //     success:function(data){
               //         console.log(data);
               //     }
               // })
               var Random = M.Random;
               console.log(Random.email());
               var data3 = M.mock('@email');
               console.log(data3);
               var data4 = M.mock({"email":"@email"});
               console.log(data4);
               console.log(M.mock({boolean:'@boolean'}));
               console.log(M.mock({natural:'@natural'}))
               console.log(M.mock({integer:'@integer'}))
               console.log(M.mock({float:'@float'}))
               console.log(M.mock({character:'@character'}))
               console.log(M.mock({string:'@string'}))
               console.log(M.mock({range:'@range'}))
               console.log(M.mock({date:'@date'}))
               console.log(M.mock({time:'@time'}))
               console.log(M.mock({datetime:'@datetime'}))
               console.log(M.mock({now:'@now'}))
               console.log(M.mock({image:'@image'}))
               console.log(M.mock({dataImage:'@dataImage'}))
               console.log(M.mock({color:'@color'}))
               console.log(M.mock({paragraph:'@paragraph'}))
               console.log(M.mock({word:'@word'}))
               console.log(M.mock({title:'@title'}))
               console.log(M.mock({cparagraph:'@cparagraph'}))
               console.log(M.mock({cword:'@cword'}))
               console.log(M.mock({ctitle:'@ctitle'}))
               console.log(M.mock({first:'@first'}))
               console.log(M.mock({last:'@last'}))
               console.log(M.mock({name:'@name'}))
               console.log(M.mock({cfirst:'@cfirst'}))
               console.log(M.mock({domain:'@domain'}))
               console.log(M.mock({area:'@area'}))
               console.log(M.mock({guid:'@guid'}))
               console.log(M.mock({capitalize:'@capitalize'}))
               console.log(M.mock({upper:'@upper'}))
               console.log(M.mock({shuffle:'@shuffle'}))
               
               M.Random.extend({
                   test:function(date){
                       var city = ["西安","杭州","北京","上海","深圳"];
                       return this.pick(city);
                   }
               })
               console.log(M.mock("@test"));
    
               var temp3 = {
                   name:"value1"
               }
               var data = {
                   name :"value2"
               }
               console.log(M.valid(temp3,data));
               var temp4 = {
                   "key|1-4":"*"
               }
               console.log(M.toJSONSchema(temp4));
          })
        </script>
    <body>
        
    </body>
    
    </html>

     这三个文件就是自己自学mockjs学习的过程,希望能帮助到大家。

  • 相关阅读:
    workerman定时器使用
    php foreach 传值还是传引用
    VPS技术介绍以及分析
    Xen、Openvz、KVM有什么区别?
    别说你会用 Google 搜索
    射手网字幕打包下载(73.16G)
    Windows Server 2003 激活码及激活方法
    Linux VPS 基本命令
    mysql 错误代码汇总
    SQL Server 2008 序列号
  • 原文地址:https://www.cnblogs.com/dirkhe/p/9314863.html
Copyright © 2011-2022 走看看