Home > Web Front-end > JS Tutorial > body text

How to mock backend data using mockjs

php中世界最好的语言
Release: 2018-04-17 10:20:57
Original
3116 people have browsed it

This time I will show you how to use mockjs to simulate back-end data, and what are the precautions for using mockjs to simulate back-end data. The following is a practical case, let's take a look.

Using mockjs can simulate data in advance. The premise is that the data interface and what kind of data have been agreed upon with the backend. You can use mock to generate the data you want, thereby achieving front-end and back-end separation during development.

Its main functions are:

  1. Generate simulation data based on data templates.

  2. Generate simulation data based on HTML template.

  3. Intercept and simulate ajax requests.

Grammar specification

The syntax specification of Mock.js includes two parts:

1. Data Template Definition (DTD)

2. Data Placeholder Definition (DPD)

Data template definition specification DTD

Each attribute in the data template consists of 3 parts: attribute name, generation rule, attribute value:

// 属性名  name
// 生成规则 rule
// 属性值  value
'name|rule': value
Copy after login
Notice:

  1. The attribute name and the generation rule are separated by a vertical bar |.

  2. Generation rules are optional.
  3. Generation rules have 7 formats:
    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

      The meaning of the generated rules is required Depends on the type of attribute value.

      The attribute value can contain @ placeholder.

      Attribute value also specifies the initial value and type of the final value.

Example 1:

Mock.mock({
  'number1|1-100.1-10': 1,
  'number2|123.1-10': 1,
  'number3|123.3': 1,
  'number4|123.10': 1.123
})
// =>
{
  "number1": 12.92,
  "number2": 123.51,
  "number3": 123.777,
  "number4": 123.1231091814
}
Copy after login
Example 2: Based on the

regular expression regexp, reversely generate a string that can match it. Used to generate custom formatted strings:

Mock.mock({
  'regexp1': /[a-z][A-Z][0-9]/,
  'regexp2': /\w\W\s\S\d\D/,
  'regexp3': /\d{5,10}/
})
// =>
{
  "regexp1": "pJ7",
  "regexp2": "F)\fp1G",
  "regexp3": "561659409"
}
Copy after login
Example 3:

//string表示属性名
//3表示后面属性值重复次数
 Mock.mock({
 "string|3": "★"
})
Copy after login
result:

//The number of stars is 3

{
"string": "★★★"
}

Example 4:

// num为属性名
// 生成一个大于等于1,小于等于100 的整数,属性值100只是用来确定类型
Mock.mock({
 "num|1-100": 100
})
Copy after login
result:

{

"number": 8
}

Data placeholder definition specification DPD

The placeholder only occupies a position in the attribute value string and does not appear in the final attribute value.

The format of the placeholder is:

@Placeholder

@Placeholder(parameter [, parameter])

Notice:

  1. Use @ to identify the following string as a placeholder.

  2. Placeholder refers to the method in Mock.Random.
  3. Mock.Random.extend() to extend custom placeholders.

  4. Placeholders can also reference attributes in the data template.
  5. Placeholders will preferentially reference attributes in the data template.
  6. Placeholder supports relative paths and absolute paths.
  7. Mock.mock({
      name: {
        first: '@FIRST',
        middle: '@FIRST',
        last: '@LAST',
        full: '@first @middle @last'
      }
    })
    // =>
    {
      "name": {
        "first": "Charles",
        "middle": "Brenda",
        "last": "Lopez",
        "full": "Charles Brenda Lopez"
      }
    }
    Copy after login

Example of requesting fake data through jQuery ajax

1. First, introduce mockjs and jquery (here, use jq-encapsulated ajax to send the request)

<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
<script src="http://mockjs.com/dist/mock.js"></script>
Copy after login
2. Use mock to generate data template

//这里的第一个参数http://api.cn 就是下面ajax请求的url,mock对该url进行拦截'
//这里的第二个参数就是template数据模板,mock会返回模板生成的数据
   Mock.mock('http://api.cn', {
    'name': '@name',
    'age|1-100': 100,
    'city': '@city'
  });
Copy after login
3.ajax sends request and result

$.ajax({
  url: 'http://api.cn',
  dataType: 'json'
}).done(function(data, status, xhr) {
  console.log( JSON.stringify(data)); //{"name":"Mark Lee","age":4,"city":"辽阳市"}
});
Copy after login

Using mockjs in vuecli

First install

npm install mockjs
Copy after login

I created a new mockdata.js

in scripts The content inside is as follows:

import Mock from 'mockjs';
const data = Mock.mock({
 // 属性 list 的值是一个数组,其中含有 1 到 10 个元素
 'foods|10-50': [{
  'name': "@ctitle(2,10)",
  "img": "@image('600x600',#b7ef7c)",
  "brief": "@csentence(1,50)",
  "price|0-20.0-2": 1,
  "num": 0,
  "minusFlag": true,
  "time": "@time",
  "peisongfei|0-100.0-2": 1,
  "limit|0-50": 1
 }],
 "sales|10-50": [{
  // 属性 id 是一个自增数,起始值为 1,每次增 1
  'name': "@ctitle(2,10)",
  "img": "@image('600x600',#b7ef7c)",
  "brief": "@csentence(1,50)",
  "price|0-100.0-2": 1,
  "num": 0,
  "minusFlag": true,
  "time": "@time",
  "peisongfei|0-100.0-2": 1,
  "limit|0-100": 1
 }]
});
export default {
 data
}
Copy after login
Next, in the vue component page of the mock data that needs to be used, write

import mockdata from "@/scripts/mockdata.js";
Copy after login
like this To quote data, just directly quote the mockdata just now in your methods. For example:

new Promise((resolve, reject) => {
  that.foods =mockdata.data.foods; //直接点出你生成的假数据对象即可
  that.foodsListLen = that.foods.length;
 }).catch(err=>{
   console.log(err)
 })
Copy after login
I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Recommended reading:



The above is the detailed content of How to mock backend data using mockjs. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template