MockJS

Mock.js之Mock方法

2019-11-15  本文已影响0人  Lia代码猪崽

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

Mock.mock( rurl?, rtype?, template|function(options) )

参数的含义和默认值如下所示:

一、Mock.mock( template )

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="show"></div>
<script src="http://mockjs.com/dist/mock.js"></script>
<script>
    window.onload = function(){
        // 使用 Mock
        var template = {
            'title': 'Syntax Demo',

            'string1|1-10': '★',
            'string2|3': 'value',

            'number1|+1': 100,
            'number2|1-100': 100,
            'number3|1-100.1-10': 1,
            'number4|123.1-10': 1,
            'number5|123.3': 1,
            'number6|123.10': 1.123,

            'boolean1|1': true,
            'boolean2|1-2': true,

            'object1|2-4': {
                '110000': '北京市',
                '120000': '天津市',
                '130000': '河北省',
                '140000': '山西省'
            },
            'object2|2': {
                '310000': '上海市',
                '320000': '江苏省',
                '330000': '浙江省',
                '340000': '安徽省'
            },

            'array1|1': ['AMD', 'CMD', 'KMD', 'UMD'],
            'array2|1-10': ['Mock.js'],
            'array3|3': ['Mock.js'],

            'function': function() {
                return this.title
            }
        }
        var data = Mock.mock(template)
        document.getElementById('show').innerText = JSON.stringify(data, null, 4);
    }
</script>
</body>
</html>


结果1

二、Mock.mock( rurl, template )

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://mockjs.com/dist/mock.js"></script>
<script>
    // Mock.mock(rurl, template)
    Mock.mock(/\.json/, {
        'list|1-10': [{
            'id|+1': 1,
            'email': '@EMAIL'
        }]
    })
    $.ajax({
        url: 'hello.json',
        dataType: 'json'
    }).done(function(data, status, jqXHR){
        $('<pre>').text(JSON.stringify(data, null, 4))
            .appendTo('body')
    })
</script>
</body>
</html>
结果1

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

记录用于生成响应数据的函数。当拦截到匹配 rurlAjax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://mockjs.com/dist/mock.js"></script>
<script>
    // Mock.mock(rurl, function(options))
    Mock.mock(/\.json/, function(options) {
        return options
    })
    $.ajax({
        url: 'hello.json',
        dataType: 'json'
    }).done(function (data, status, jqXHR) {
        $('<pre>').text(JSON.stringify(data, null, 4))
            .appendTo('body')
    })
</script>
</body>
</html>
结果

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

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

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://mockjs.com/dist/mock.js"></script>
<script>
    // Mock.mock( rurl, rtype, template )
    Mock.mock(/\.json/, 'get', {
        type: 'get'
    })
    Mock.mock(/\.json/, 'post', {
        type: 'post'
    })
    $.ajax({
        url: 'hello.json',
        type: 'get',
        dataType: 'json'
    }).done(function (data, status, jqXHR) {
        $('<pre>').text(JSON.stringify(data, null, 4))
            .appendTo('body')
    })

    $.ajax({
        url: 'hello.json',
        type: 'post',
        dataType: 'json'
    }).done(function (data, status, jqXHR) {
        $('<pre>').text(JSON.stringify(data, null, 4))
            .appendTo('body')
    })
</script>
</body>
</html>
结果

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

记录用于生成响应数据的函数。当拦截到匹配 rurlrtypeAjax 请求时,函数 function(options) 将被执行,并把执行结果作为响应数据返回。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="http://mockjs.com/dist/mock.js"></script>
<script>
    // Mock.mock( rurl, rtype, function(options) )
    Mock.mock(/\.json/, 'get', function(options) {
        return options.type
    })
    Mock.mock(/\.json/, 'post', function(options) {
        return options.type
    })

    $.ajax({
        url: 'hello.json',
        type: 'get',
        dataType: 'json'
    }).done(function (data, status, jqXHR) {
        $('<pre>').text(JSON.stringify(data, null, 4))
            .appendTo('body')
    })

    $.ajax({
        url: 'hello.json',
        type: 'post',
        dataType: 'json'
    }).done(function (data, status, jqXHR) {
        $('<pre>').text(JSON.stringify(data, null, 4))
            .appendTo('body')
    })
</script>
</body>
</html>
结果

参考资料

http://mockjs.com/

上一篇下一篇

猜你喜欢

热点阅读