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: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
Attribute value also specifies the initial value and type of the final value.
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 }
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" }
//string表示属性名 //3表示后面属性值重复次数 Mock.mock({ "string|3": "★" })
{
"string": "★★★"
}
// num为属性名 // 生成一个大于等于1,小于等于100 的整数,属性值100只是用来确定类型 Mock.mock({ "num|1-100": 100 })
"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])
Mock.mock({ name: { first: '@FIRST', middle: '@FIRST', last: '@LAST', full: '@first @middle @last' } }) // => { "name": { "first": "Charles", "middle": "Brenda", "last": "Lopez", "full": "Charles Brenda Lopez" } }
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>
//这里的第一个参数http://api.cn 就是下面ajax请求的url,mock对该url进行拦截' //这里的第二个参数就是template数据模板,mock会返回模板生成的数据 Mock.mock('http://api.cn', { 'name': '@name', 'age|1-100': 100, 'city': '@city' });
$.ajax({ url: 'http://api.cn', dataType: 'json' }).done(function(data, status, xhr) { console.log( JSON.stringify(data)); //{"name":"Mark Lee","age":4,"city":"辽阳市"} });
Using mockjs in vuecli
First installnpm install mockjs
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 }
import mockdata from "@/scripts/mockdata.js";
new Promise((resolve, reject) => { that.foods =mockdata.data.foods; //直接点出你生成的假数据对象即可 that.foodsListLen = that.foods.length; }).catch(err=>{ console.log(err) })
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!