美文网首页Vue
mock js语法规范—数据模板定义

mock js语法规范—数据模板定义

作者: 坏丶毛病 | 来源:发表于2020-08-22 19:31 被阅读0次

mock.js是前端开发中实现前后端分离所必不可少的,上次我们讲了简单的使用mock.js,那么这次我们来介绍一下mock.js的语法规范。

Mock.js的语法规范包括两部分:

  • 数据模板定义(Data Temaplate Definition,简称DTD)
  • 数据占位符定义(Data Placeholder Definition,简称DPD)

本次主要讲述mock.js的数据模板定义。

数据模板中的每个属性由三部分构成:属性名、生产规则、属性值

// 格式:
'name|rule:value'
// 属性名:name
// 生成规则:rule
// 属性值:value
// 注意事项:
属性名 和 生成规则 之间用 | 分隔
生成规则 是可选的
生成规则有7中格式:
    1、'name|min-max': value
    2、'name|count': value
    3、'name|min-max.dmin-dmax': value
    4、'name|min-max.dcount': value
    5、'name|count.dmin-dmax': value
    6、'name|count.dcount': value
    7、'name|+step': value
生成规则 的 含义 需要依赖 属性值 才能确定
属性值 中可以含有占位符
属性值 还指定了最终值得初始值和类型

生成规则和具体案例:

  • 属性值是字符串String

'name|min-max':'value' :通过重复‘value’生成一个字符串,重复次数大于等于min,小于等于max

// eg:生成一个随机1-10位的‘★’字符串

// 代码:
Mock.mock({
  "demo1|1-10": "★"
})

// 结果:
{
    "demo1": "★★★"
}

'name|count': 'value' :通过重复 'value' 生成一个字符串,重复次数等于 count

// eg:生成一个固定5位的“★”字符串

// 代码:
Mock.mock({
  "demo2|5": "★"
})

// 结果:
{
    "demo2": "★★★★★"
}
  • 属性值是数字Number

'name|min-max':value :生成一个大于等于min,小于等于max的整数,属性值value只用来确定类型

// eg:生成一个大于等于1,小于等于100的整数,属性值100只用来确定类型

// 代码:
Mock.mock({
    "demo3|1-100":100
})

// 结果:
{
    "demo3": 86
}

'name|+step':value :属性值自动加step,初始值为value

// eg:属性值自动加1,初始值为100(用于多次请求,这里我请求了三次)

// 代码:
Mock.mock({
    "demo4|+1":100
})

// 结果:
{
    "demo4": 100
}
{
    "demo4": 101
}
{
    "demo4": 102
}

'name|min-max.dmin-dmax':value :生成一个浮点数,整数部分大于等于min,小于等于max,小数部分保留dmin-dmax

// eg:生成一个浮点数,整数部分大于等于1,小于等于100,小数部分保留1-10位

// 代码:
Mock.mock({
    "demo5|1-100.1-10":100
})

// 结果:
{
    "demo5": 89.7116
}

'name|min-max.dcount':value :生成一个浮点数,整数部分大于等于min,小于等于max,小数部分保留dcount位

// eg:生成一个浮点数,整数部分大于等于1,小于等于100,小数部分保留4位

// 代码:
Mock.mock({
    "demo6|1-100.4"
})

// 结果:
{
    "demo6": 89.4175
}

'name|count.dmin-dmax':value :生成一个浮点数,整数部分为count,小数部分保留dmin-dmax位

// eg:生成一个浮点数,整数部分为23,小数部分保留1-10位

// 代码:
Mock.mock({
    "demo7|23.1-10":100
})

// 结果:
{
    "demo7": 23.9523016888
}

'name|count.dcount':value :生成一个浮点数,整数部分为count,小数部分保留dcount位

// eg:生成一个浮点数,整数部分为23,小数部分保留5位

// 代码:
Mock.mock({
    "demo8|23.5":100
})

// 结果:
{
    "demo8": 23.32552
}
  • 属性值是布尔型Boolean

'name|count':value :随机生成一个布尔值,值为value的概率为count/(1+count),值不为value的概率为1/(1+count)

// eg:随机生成一个布尔值,值为true的概率为3/4,值为false的概率为1/4

// 代码:
Mock.mock({
    "demo9|3":true
})

// 结果:
{
    "demo9": true
}

'name|min-max':value :随机生成一个布尔值,值为value的概率是min/(min+max),值不为value的概率是max/(min+max)

// eg:随机生成一个布尔值,值为true的概率是1/11,值为false的概率是10/11

// 代码:
Mock.mock({
    "demo10|1-10":true
})

// 结果:
{
    "demo10": false
}
  • 属性值是对象Object

'name|min-max':{} :从属性值 { } 中随机选取min-max个属性

// eg:从对象中随机选取2-4个属性

// 代码:
Mock.mock({
    "demo11|2-4": {
        "110000": "北京市",
        "120000": "天津市",
        "130000": "河北省",
        "140000": "山西省",
        "150000": "宁夏省",
        "160000": "陕西省"
    }
})

// 结果:
{
    "demo11": {
        "120000": "天津市",
        "130000": "河北省",
        "140000": "山西省"
    }
}

'name|count':{} :从属性值 { } 中随机选取count个属性

// eg:从对象中随机选取3个属性

// 代码:
Mock.mock({
    "demo12|2": {
        "姓名": "张三",
        "性别": "男",
        "年龄": "32",
        "爱好": "敲代码"
    }
})

// 结果:
{
    "demo12": {
        "姓名": "张三",
        "爱好": "敲代码"
    }
}
  • 属性值是数组Array

'name|1':[' ', ' ' ...] 或 'name|1':[{}, {} ...]

从属性值 [ ] 中随机选取1个元素,作为最终值

// eg:从 [] 中随机选取一个元素

// 代码:
Mock.mock({
    "demo13|1": [
        "AMD",
        "CMD",
        "UMD"
    ]
})

// 结果:
{
    "demo13": "CMD"
}

// eg:对象数组中随机选取一个元素

// 代码:
Mock.mock({
    "demo14|1": [
        {
            "1":"一",
            "2":"二",
            "3":"三"
        },
        {
            "4":"四",
            "5":"五",
        },
        {
            "6":"六",
            "7":"七"
        }
    ]
});

// 结果:
{
    "demo14": {
        "6": "六",
        "7": "七"
    }
}

'name|count': [' ', ' ' ...] 或 'name|count': [{}, {} ...]

通过重复属性值 [ ] 生成一个新数组,重复次数为count次

// eg:生成一个重复3次的新数组

// 代码:
Mock.mock({
    "demo15|3": [
        "AMD",
        "CMD",
        "UMD"
    ]
})

// 结果:
{
    "demo15": [
        "AMD",
        "CMD",
        "UMD",
        "AMD",
        "CMD",
        "UMD",
        "AMD",
        "CMD",
        "UMD"
    ]
}

'name|min-max':[' ', ' ' ...] 或 'name|min-max':[{}, {} ...]

通过重复属性值 [ ] 生成一个新数组,重复次数为min-max次

// eg:生成一个重复1-5次的新数组

// 代码:
Mock.mock({
    "demo16|1-5": [
        "AMD",
        "CMD",
        "UMD"
    ]
})

// 结果:
{
    "demo16": [
        "AMD",
        "CMD",
        "UMD",
        "AMD",
        "CMD",
        "UMD"
    ]
}
  • 属性值是函数Function

'name': function( ){ } :执行函数function(){},取其返回值作为最终的属性值,上下文为'name'所在的对象

// eg:执行函数,返回当前this所在的对象的foo属性

// 代码:
Mock.mock({
    'foo': 'Demo',
    'demo17': function(){
        return this.foo
    }
})

// 结果:
{
    "foo": "Demo",
    "demo17": "Demo"
}
  • 属性值是正则(RegExp)

'name':regexp

// eg:匹配三位字符串,分别为a-z、A-Z、0-9

// 代码:
Mock.mock({
    'demo18': /[a-z][A-Z][0-9]/
})

// 结果:
{
    "demo18": "cR8"
}
// eg:匹配3个以 - 结尾连接的随机5-10位的数字组成的字符串

// 代码:
Mock.mock({
    'demo19|3': /\d{5,10}\-/
})

// 结果:
{
  "demo19": "225818-737250564-534282-"
}
// eg:匹配1-5个以 - 结尾连接的1-3位的数字组成的字符串

// 代码:
Mock.mock({
  'demo20|1-5': /\d{1,3}\-/
})

// 结果:
{
    "demo20": "3-1-24-577-"
}
  • 属性值是路径(Path)

Absolute Path(绝对路径):匹配当前元素的上下文所在的绝对路径,返回对应值

// 代码:
Mock.mock({
    'foo': 'hello',
    'nested': {
        'a': {
            'b': {
                'c': 'Mock.js'
            }
        }
    },
    'demo21': '@/foo @/nested/a/b/c'
})

// 结果:
{
    "foo": "hello",
    "nested": {
        "a": {
            "b": {
                "c": "Mock.js"
            }
        }
    },
    "demo21": "hello Mock.js"
}

Relative Path(相对路径):匹配当前元素相对于上一级元素的相对路径,返回对应值

// 代码:
Mock.mock({
    'foo': 'hello',
    'nested': {
        'a': {
            'b': {
                'c': 'Mock.js'
            }
        }
    },
    'demo22': {
        'a': {
            'b': {
                'c': '@../../../foo @../../../nested/a/b/c'
            }
        }
    }
})

// 结果:
{
    "foo": "hello",
    "nested": {
        "a": {
            "b": {
                "c": "Mock.js"
            }
        }
    },
    "demo22": {
        "a": {
            "b": {
                "c": "hello Mock.js"
            }
        }
    }
}

好了,以上就是数据模板的一些代码案例了,都是博主自己敲的,亲测有效。

希望对大家有帮助。

如有问题,请指出,接受批评。

个人微信公众号:


image.png

相关文章

  • mockjs学习

    Mock.js语法规范包括两部分:数据模板定义规范和数据占位符定义规范。 1.数据模板定义规范: 数据模板中的每个...

  • Mock.js之语法规范

    Mock.js 的语法规范包括两部分: 数据模板定义(Data Temaplte Definition,DTD) ...

  • mock js语法规范—数据模板定义

    mock.js是前端开发中实现前后端分离所必不可少的,上次我们讲了简单的使用mock.js,那么这次我们来介绍一下...

  • mock.js深入

    1.Mock.mock( template )根据数据模板生成模拟数据。(具体语法见mock.js入门) 2.Mo...

  • Mock 的学习之路(一)

    安装Mock 语法规范 数据模板 数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值:生成规则 有 7...

  • mock.js使用

    语法规范 包含两部分:1)数据模板定义规范(Data Template Definition,DTD)2)数据占位...

  • mock.js语法规范

    语法规范 数据模板定义规范 DTD 数据模板中的每个属性由 3 部分构成:属性名、生成规则、属性值: 注意: 属性...

  • baiduTemplate / artTemplate

    JS引擎模板 baiduTeplate 模板语法 提供一套模板语法,用户可以定义一个模板区块,每次根据传入的数据生...

  • 小程序配合mockjs随机生成数据

    直接引入mock.js 下载mock.js 2.直接使用Mock.mock根据随机规则语法生成自己的数据 3.直接...

  • ES6常用语法糖(附Babel配置使用方法)

    获取数据: 解构赋值 解构赋值 填充数据: 模板语法 (多行字符串) 模板语法 规范数据域 :let/const,...

网友评论

    本文标题:mock js语法规范—数据模板定义

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