Mockjs入门级操作 && 案例操作(实现增删改查功能) (一)

Mockjs入门级操作 && 案例操作(实现增删改查功能)


前言

在开发过程中,前端的开发工作往往会比较受限于后端.比如项目的很多功能需要借助后端的接口数据才能进行开发测试.以往是使用手写json数据或者让后端大佬写测试数据提供测试. 但是这种的效率相对都比较慢.
而mockjs能够很好的解决这一问题.模拟接口,随机生成数据, 使前端和后端的工作配合更加高效,且让前端攻城师独立于后端进行开发(项目demo练习时不再受限于没有数据)。


提示:以下是本篇文章正文内容,如有不当之处欢迎指正

一、关于mockjs?

Mock.js 是一款模拟数据生成器,旨在帮助前端攻城师独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:

  • 根据数据模板生成模拟数据
  • 模拟 Ajax 请求,生成并返回模拟数据
  • 基于 HTML 模板生成模拟数据

二、mockjs引入步骤

1.安装依赖

代码如下(示例):

npm install mockjs

2.新建mock/index.js

代码如下(示例):

import Mock from "mockjs"

3.在main.js中引入

import './mock'

三、mockjs的语法规范:

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

  1. 数据模板定义(Data Temaplte Definition,DTD)
  2. 数据占位符定义(Data Placeholder Definition,DPD)

1.数据模板定义

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

// 属性名 name
// 生成规则 rule
// 属性值 value
‘name|rule’: value

2. 数据模板-生成规则

  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
    提示: 1.属性名和生成规则之间使用 | 分隔 2. 生成规则的含义需要依赖属性值才能确定 (下面案例解释)

1).属性值是字符串String

// "string|min-max":通过重复 'value' 生成一个字符串,重复次数大于等于 min,小于等于 max。
const str = Mock.mock({
  'string|1-5': '测试'
})
console.log(str, 'str')  //{string: "测试测试测试测试测试"}

// 'name|count': 'value' 通过重复 'value' 生成一个字符串,重复次数等于 count。
const str2 = Mock.mock({
  'string|2': '测试'
})
console.log(str2, 'str2') // {string: "测试测试"}

2) 属性值是数字Number

/**
'name|+1': 100 属性值自动加 1,初始值为 100
'name|1-100': 100 生成一个大于等于 1、小于等于 100 的整数,属性值 100 只用来确定类型。
'name|1-100.1-10': 100 生成一个浮点数,整数部分大于等于 1、小于等于 100,小数部分保留 1 到 10 位。
 */

const number = Mock.mock({
  'number1|+1': 100,
  'number2|1-100': 100,
  'number3|1-100.1-10': 100
})

console.log(number, 'number') //{number1: 100,number2: 99,number3: 100.748}

3)属性值是布尔型 Boolean

/**
'name|1': value 随机生成一个布尔值,值为 true 的概率是 1/2,值为 false 的概率是 1/2。
'name|min-max': value 随机生成一个布尔值,值为 value 的概率是 min / (min + max),值为 !value 的概率是 max / (min + max)。
 */

const boolean = Mock.mock({
  'boolean1|1': true,
  'boolean2|1-2': true
})
console.log(boolean, 'Boolean') // {boolean1: true , boolean2: false}  --具有随机性

4) 属性值是对象 Object

const obj = Mock.mock({
  'obj1|3': {
    1: '张三',
    2: '李四',
    3: '王五',
    4: '赵六',
    5: '匿名'
  },
  'obj2|1-5': {
    1: '张三',
    2: '李四',
    3: '王五',
    4: '赵六',
    5: '匿名'
  }
})
console.log(obj, 'obj')

在这里插入图片描述

5) 属性值是数组 Array

/**
'name|1': [{}, {} ...] 从属性值 [{}, {} ...] 中随机选取 1 个元素,作为最终值。
'name|+1': [{}, {} ...] 从 属性值 [{}, {} ...] 中 按索引顺序+1选取1个元素 ,作为最终值
'name|min-max': [{}, {} ...] 通过重复属性值 [{}, {} ...] 生成一个新数组,重复次数大于等于 min,小于等于 max。
'name|count': [{}, {} ...] 通过重复属性值 [{}, {} ...] 生成一个新数组,重复次数为 count。
 */

const array = Mock.mock({
  'array1|1': ['AMD', 'CMD', 'UMD'],
  'array2|+1': ['AMD', 'CMD', 'UMD'],
  'array3|1-10': ['Mock.js'],
  'array4|3': ['Mock.js']
})
console.log(array, 'array')

在这里插入图片描述

6) 属性值是数组 Function

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

const fun = Mock.mock({
  foo: 'Syntax Demo',
  name: function () {
    return this.foo
  },
  gender: function () {
    return '女'
  }
})
console.log(fun, 'fun') //  {foo: "Syntax Demo",gender: "女",name: "Syntax Demo"}

3.数据占位符定义

占位符 只是在属性值字符串中占个位置,并不出现在最终的属性值中。占位符 的格式为:
@占位符
@占位符(参数 [, 参数])


4. 数据占位符-常用生成方法

提示: 以下是使用占位符的注意事项:

  1. 用 @ 来标识其后的字符串是 占位符。
  2. 占位符 引用的是 Mock.Random 中的方法。
  3. 通过Mock.Random.extend() 来扩展自定义占位符。
  4. 占位符 也可以引用 数据模板 中的属性。
  5. 占位符 会优先引用 数据模板中的属性

1) 生成文本

/**
 '@cword' : 生成一个随机字符串
 '@cword(min,max)' : 生成指定长度和范围
 */

const word = Mock.mock({
  string1: '@cword',
  string2: '@cword(4)',
  string3: '@cword(5,10)'
})
console.log(word, 'word')

在这里插入图片描述

2)生成标题和句子

/**
 * "@ctitle" : 生成随机标题
 * "@csentence" : 生成随机句子
 * ps : 后面都可以跟参数 (min,max) 同"@word"
 */
const data = Mock.mock({
  title: '@ctitle(8)',
  sentence: '@csentence'
})

console.log(data, 'data')

在这里插入图片描述
以下案例和以上都是一样的用法,我就直接总结常用的占位符定义的方法啦

  1. 生成段落 : @cparagraph()
  2. 生成自增id : @increment
  3. 生成姓名 : @cname()
  4. 地址 : @city(true) ps: 参数为 true --生成的地址有省份
  5. 身份证 : @id()
  6. 随机生成图片 : @image(size?, background?, foreground?, format?, text? )

size:图片大小
background :图片背景色
foreground:图片前景色
format:图片格式
text:图片文字

  1. 生成时间 : @Date

生成指定格式时间:@date(format)
@datetime( format )
@time(format)

  1. 生成颜色 :

@color()
@rgb()
@rgba()
@hex()
@hsl()

四. mockjs 定义请求

1. 语法

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

2.参数讲解

  1. 参数 rurl:可选。表示需要拦截的 URL,可以是 URL 字符串或 URL 正则。例如//domain/list.json/、‘/domian/list.json’。
  2. 参数 rtype:可选。表示需要拦截的 Ajax.请求类型。例如 GET、POST、PUT、DELETE 等。
  3. 参数 template:可选。表示数据模板,可以是对象或字符串。
  4. 参数 function(options):可选。表示用于生成响应数据的函数。
  5. 参数 options:指向本次请求的 Ajax 选项集。

3. 示例

mock/index.js :

const result = Mock.mock({
  data: [
    {
      id: '@increment',
      name: '@cname()',
      address: '@city(true)'
    }
  ]
})
// 模拟一个不需要传参的 get 请求
Mock.mock('mock/demo/test', 'get', () => {
  return {
    status: 200,
    message: '数据获取成功',
    data: result
  }
})

** test.vue : **

import axios from 'axios'
export default {
  created() {
    axios.get('mock/demo/test').then((res) => {
      console.log(res, 'res')
    })
  }
}

在这里插入图片描述

总结

以上是我使用mockjs后的一些相关操作的总结与demo示例,如有不当欢迎指正.
多看文档,多写示例~
最后 关于如何使用mockjs实现列表的curd功能将会重新写一篇文章进行完整详细的记录.

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在使用mock.js进行增删改查操作时,你需要引入mock.js和jQuery,并将其作为script标签添加到页面中。在index.js中,你可以使用Mock.mock()来模拟一个不需要传参的get请求,并定义返回的数据格式。如果你想删除mockList中的某个用户,可以使用filter()方法来筛选出不等于指定id的用户,并将该用户从mockList中删除。当删除操作完成后,你可以返回一个成功的响应,包括状态码和消息。123 #### 引用[.reference_title] - *1* [mock.js增删改查](https://blog.csdn.net/Y_web/article/details/118926746)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* [Mockjs入门级操作 && 案例操作(实现增删改查功能) (一)](https://blog.csdn.net/m0_59232123/article/details/123760879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *3* [Mockjs模拟数据,实现增删改查](https://blog.csdn.net/lvkelly/article/details/102937847)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值