Mock.js 基本语法与应用笔记
🌟 前言
欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍
🤖 洛可可白:个人主页
🔥 个人专栏:✅前端技术 ✅后端技术
🏠 个人博客:洛可可白博客
🐱 代码获取:bestwishes0203
📷 封面壁纸:洛可可白wallpaper

文章目录
- Mock.js 基本语法与应用笔记
- 1. Mock 基本语法
- 生成指定字符
- 生成随机字符
- 生成标题和句子
- 生成段落
- 生成数字
- 生成增量 ID
- 身份证号、姓名、地址
- 生成图片
- 生成时间
- 指定数组返回的长度和范围
- 2. Mock 拦截请求
- 3. Vue 中测试
- 4. 另一种使用方式
- 5. vite 项目
- 🎉 往期精彩回顾
Mock.js 基本语法与应用笔记
Mock.js 是一个基于 JavaScript 的模拟数据生成库,它可以帮助开发者在前端开发过程中模拟后端API,提供测试数据。Mock.js 的主要功能是生成各种类型的模拟数据,包括文本、数字、日期、数组等,同时也支持拦截请求和响应,使得前端可以在不依赖后端API的情况下进行开发和测试。
1. Mock 基本语法
生成指定字符
import Mock from 'mockjs';const data = Mock.mock({str: '🤣'
});console.log(data);
指定字符和具体个数
const data = Mock.mock({'str|3': '🤣'
});
指定字符和区间
const data = Mock.mock({'str|3-5': '🤣'
});
生成随机字符
const data = Mock.mock({// 一串字母str: '@word'// 一个汉字// str: '@cword'
});
指定个数
const data = Mock.mock({// 3 个中文汉字'str|3': '@cword'// str: '@cword(3)'
});
指定区间
const data = Mock.mock({// 3 到 5 个中文字符'str|3-5': '@cword'// str: '@cword(3, 5)'
});
生成标题和句子
const data = Mock.mock({title: '@ctitle',sentence: '@csentence'
});
可以指定标题和句子的汉字长度和范围
// 长度
const data = Mock.mock({title: '@ctitle(3)',sentence: '@csentence(10)'
});
// 范围
const data = Mock.mock({title: '@ctitle(3, 5)',sentence: '@csentence(10, 15)'
});
生成段落
const data = Mock.mock({content: '@cparagraph'
});
指定段落的个数和范围
// 注意这里 3 代表的是 3 个段落,而不是 3 个中文字符
// 1 个句号是 1 段
const data = Mock.mock({content: '@cparagraph(3)'
});
生成数字
生成指定数字
const data = Mock.mock({// number: 20,// 如果是数值型的 value 将失去意义,最终都表示竖线右边的 20,一般写个 1'number|20': 1
});
生成数字区间
const data = Mock.mock({'number|1-10': 1
});
生成增量 ID
for (let i = 0; i < 10; i++) {const data = Mock.mock({// 默认 1,每次增加 1// id: '@increment'// 每次增加 10id: '@increment(10)'});console.log(data);
}
身份证号、姓名、地址
const data = Mock.mock({id: '@id',name: '@cname',address: '@city(true)'
});
生成图片
const data = Mock.mock({// 大小、背景色、前景色、格式、文字// 注意:颜色要是十六进制,不支持关键字,例如 redimage: "@image('200x200', '#f00', '#fff', 'jpg', 'H')"
});
生成时间
const data = Mock.mock({time1: '@date', // 年-月-日time2: '@date("yyyy-MM-dd HH:mm:ss")'
});
指定数组返回的长度和范围
const data = Mock.mock({'list|1-3': [{name: '@cname',address: '@city(true)',id: '@increment(1)'}]
});
2. Mock 拦截请求
增
POST => /api/users
Mock.mock(/^\/api\/users/, 'post', (options) => {const user = JSON.parse(options.body);user.id = data.list.length ? data.list[data.list.length - 1].id + 1 : 1;data.list.push(user);return {status: 200};
});
删
DELETE => /api/users/:id
Mock.mock(/^\/api\/user\/.+/, 'delete', (options) => {const id = options.url.split('/').pop();// !注意 id 变成了字符串const idx = data.list.findIndex((item) => item.id === +id);data.list.splice(idx, 1);return {status: 200};
});
改
PUT => /api/users/:id
Mock.mock(/^\/api\/users\/.+/, 'put', (options) => {const user = JSON.parse(options.body);const idx = data.list.findIndex((item) => item.id === +user.id);data.list[idx] = user;return {status: 200};
});
查
GET => /api/users
Mock.mock(/^\/api\/user/, 'get', (options) => {const {pagenum,pagesize,query,id} = qs.parse(options.url.split('?')[1]);if (id) {const user = data.list.find((item) => item.id === +id);return {status: 200,user};}// 1 10 0 ~ 10// 2 10 10 ~ 20const start = (pagenum - 1) * pagesize;const end = pagenum * pagesize;const total = data.list.length;const totalPage = Math.ceil(data.list.length / pagesize);let list = [];if (pagenum > totalPage) {list = [];} else {list = data.list.slice(start, end);}return {status: 200,list,total};
});
GET => /api/users/:id
Mock.mock(/^\/api\/users\/.+/, 'get', (options) => {const id = options.url.split('/').pop();const user = data.list.find((item) => item.id === +id);return {status: 200,user};
});
3. Vue 中测试
User.vue
<template><div class="users"><el-card class="box-card"><el-table :data="tableData" style="width: 100%"><el-table-column prop="date" label="日期" width="180" /><el-table-column prop="name" label="姓名" width="130" /><el-table-column prop="address" label="地址" width="180" /><el-table-columnfixed="right"label="操作"width="80"align="right"><template slot-scope="scope"><el-button@click="deleteRow(scope.row)"type="text"size="small">删除</el-button></template></el-table-column></el-table><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="q.pagenum":page-sizes="[5, 10, 15, 20]":page-size="q.pagesize"layout="total, sizes, prev, pager, next, jumper":total="total"></el-pagination></el-card></div>
</template><script>
import axios from 'axios';
export default {data() {return {tableData: [],q: {pagenum: 1,pagesize: 5,query: ''},total: 0};},created() {this.getUsers();},methods: {async getUsers() {const {data: { list, total }} = await axios.get('/api/users', {params: this.q});this.tableData = list;this.total = total;},handleSizeChange(pagesize) {this.q.pagesize = pagesize;this.getUsers();},handleCurrentChange(pagenum) {this.q.pagenum = pagenum;this.getUsers();},async deleteRow({ id }) {const { data } = await axios.delete(`/api/user/${id}`)if (data.status === 200) {this.getUsers();this.$message.success('删除成功');}}}
};
</script>
<style>
.box-card {margin: 40px auto 0;width: 630px;
}
.clearfix:before,
.clearfix:after {display: table;content: '';
}
.clearfix:after {clear: both;
}
.el-pagination {margin-top: 15px;
}
</style>
4. 另一种使用方式
vue.config.js
const qs = require('querystring');
const Mock = require('mockjs');
const data = Mock.mock({'list|27': [{id: '@increment(1)',date: '@date(yyyy-MM-dd hh:mm:ss)',name: '@cname',address: '@city(true)'}]
});
module.exports = {devServer: {before(app) {app.get('/api/users', (req, res) => {const { pagenum, pagesize, query } = qs.parse(req.url.split('?')[1]);const start = (pagenum - 1) * pagesize;const end = pagenum * pagesize;const total = data.list.length;const totalPage = Math.ceil(data.list.length / pagesize);let list = [];if (pagenum > totalPage) {list = [];} else {list = data.list.slice(start, end);}res.send({status: 200,list,total});});app.delete('/api/users/:id', (req, res) => {const idx = data.list.findIndex((item) => item.id === +req.params.id);data.list.splice(idx, 1);res.send({status: 200});});}}
};
5. vite 项目
vite.config.js
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import { viteMockServe } from "vite-plugin-mock";// https://vitejs.dev/config/
export default defineConfig({plugins: [vue(),viteMockServe({mockPath: "mock",localEnabled: true,}),],
});
mock/index.js
import Mock from 'mockjs'
// 内存模拟数据
const arr = []
for (let i = 0; i < 10; i++) {arr.push({id: Mock.mock('@guid'),name: Mock.mock('@cname'),place: Mock.mock('@county(true)'),})
}
export default [{url: '/list',method: 'get',response: () => {return arr}},{url: '/del',method: 'delete',response: ({query}) => {const index = arr.findIndex((item) => item.id === query.id)arr.splice(index, 1)return { success: true }}}
]
如果对你有帮助,点赞、收藏、关注是我更新的动力!👋🌟🚀
🎉 往期精彩回顾
- VS Code上搭建Vue开发环境
- 文章浏览阅读10.1k次,点赞64次,收藏13次。
- Color-UI 简介及使用教程
- 文章浏览阅读5.9k次,点赞13次,收藏2次。
- Vue.2&Vue.3项目引入Element-UI教程&踩坑
- 文章浏览阅读9.2k次,点赞82次,收藏22次。
- VS code搭建C/C++运行环境简单易上手
- 文章浏览阅读2.7k次,点赞8次,收藏5次。
- 入门指南:使用uni-app构建跨平台应用
- 文章浏览阅读1.2k次,点赞29次,收藏9次。
相关文章:
Mock.js 基本语法与应用笔记
🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…...
vue从零到一创建项目?
创建一个Vue项目通常需要经过以下步骤,从零开始构建一个基本的Vue项目: 步骤一:安装Node.js和npm 下载安装Node.js: 在Node.js官网下载适合你操作系统的Node.js安装包,并按照提示进行安装。安装完Node.js后ÿ…...
安装PyTorch详细过程
安装anaconda 登录anaconda的官网下载,anaconda是一个集成的工具软件不需要我们再次下载。anaconda官网 跳转到这个页面如果你的Python版本正好是3.8版,那便可以直接根据系统去选择自己相应的下载版本就可以了。 但是如果你的Python版本号不是当前页面…...
使用Rust开发小型搜索引擎
一、概述 用Rust创建搜索引擎是探索该语言在性能和安全性方面具有优势的绝佳方式。 这个项目将索引和搜索概念转移到Rust的生态系统中,由于Rust独特的语法和范式,这是一个挑战,但也是有益的。 二、构建搜索引擎 步骤1,创建项目…...
2024.3.13
1.顺序表去重 代码: //顺序表去重 void dele(seq_p L) {if(LNULL){printf("入参为空,请检查\n");return;}for(int i0;i<L->len-1;i){for(int ji1;j<L->len;j){if(L->data[i]L->data[j]){dele_data(L,L->data[j]);j--;}…...
schedule() , schedule_work() 以及schedule_timeout_interruptible()区别
schedule() 和 schedule_work() 是 Linux 内核中用于任务调度的两个函数,它们的作用和使用场景有所不同。 schedule() 函数: * 作用:将当前任务放入睡眠状态并调度其他可运行任务的函数。当调用 schedule() 时,当前任务会放弃 CPU…...
AWS入门实践-AWS CLI工具的使用介绍
AWS CLI(Amazon Web Services Command Line Interface)是一个强大的工具,它允许您直接从命令行与AWS服务进行交互。这不仅可以加快许多任务的处理速度,而且还可以通过脚本自动化。 一、AWS CLI工具的安装 1、Windows 安装下载…...
Xterminal:未来的终端体验
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 开发环境篇 ✨特色专栏: M…...
“光谱视界革新:ChatGPT在成像光谱遥感中的智能革命“
遥感技术主要通过卫星和飞机从远处观察和测量我们的环境,是理解和监测地球物理、化学和生物系统的基石。ChatGPT是由OpenAI开发的最先进的语言模型,在理解和生成人类语言方面表现出了非凡的能力。本文重点介绍ChatGPT在遥感中的应用,人工智能…...
Docker Register 搭建私有镜像仓库
1 安装 docker (1)更新软件源 sudo apt update (2)安装 docker 组件 sudo apt install docker.io (3)启动 docker 服务 sudo systemctl start docker (4)设置 docker 服务开机自启动 sudo systemctl enable docker (5)验证 docker 功能 sudo docker contai…...
蓝桥杯真题讲解:三国游戏(贪心)
蓝桥杯真题讲解:三国游戏(贪心) 一、视频讲解二、正解代码 一、视频讲解 蓝桥杯真题讲解:三国游戏(贪心) 二、正解代码 //三国游戏:贪心 #include<bits/stdc.h> #define int long lon…...
docker之自己制作jdk镜像
一,下载想要制作的镜像的对应jdk(自行下载),本文使用jdk17(因为自己的springboot项目时在jdk17下开发的,悲!!!,再加上没有在官网上找到对应镜像,只…...
基于SpringBoot的农产品特色供销系统(蔬菜商城)
基于SpringBoot的农产品特色供销系统(蔬菜商城) 系统介绍 该系统使用Java、MySQL、Redis、Spring Boot和HTML等技术作为系统的技术支撑,实现了以下功能模块: (1)后台管理模块,包括权限、日志、…...
【性能】如何计算 Web 页面的 TTI 指标
什么是 TTI 指标 TTI(Time To Interactive),即从页面加载开始到页面处于完全可交互状态所花费的时间。页面处于完全可交互状态时,满足以下 3 个条件: 页面已经显示有用内容。页面上的可见元素关联的事件响应函数已经…...
大模型交互-超拟人合成
1、超拟人合成:将文字转化为自然流畅的人声,在实时语音合成的基础上,精准模拟人类的副语言现象,如呼吸、叹气、语速变化等,使得语音不仅流畅自然,更富有情感和生命力。 2、唤醒的持久运行--->合成能力加…...
第十四届蓝桥杯蜗牛
蜗牛 线性dp 目录 蜗牛 线性dp 先求到达竹竿底部的状态转移方程 求蜗牛到达第i根竹竿的传送门入口的最短时间编辑 题目链接:蓝桥杯2023年第十四届省赛真题-蜗牛 - C语言网 关键在于建立数组将竹竿上的每个状态量表示出来,并分析出状态转移方程 in…...
分布式定时任务调度xxl-job
1. xxl-job基本介绍 1.1 Quartz的体系结构 Quartz中最重要的三个对象:Job(作业)、Trigger(触发器)、Scheduler(调度器)。 xxl-job的调度原理:调度线程在一个while循环中不断地获取一定数量的即将触发的Tr…...
自动化运维利器Ansible基础(环境部署)
Ansible 介绍及安装 1. 介绍 Ansible 是⼀个 IT ⾃动化⼯具。它能配置系统、部署软件、编 排更复杂的 IT 任务,如连续部署或零停机时间滚动更新。 Ansible ⽤ Python 编写,尽管市⾯上已经有很多可供选择的 配置管理解决⽅案(例如 Salt、Pupp…...
微服务自动化管理初步认识与使用
目录 一、ETCD 1.1、ETCD简介 对于实施工程师: 1.2、特点 1.3. 使用场景 1.4、 关键字 1.5 工作原理 二、ETCD的安装 2.1、下载路径 2.2、介绍 2.3、具体操作 安装服务端 安装etcd客户端 测试 三、ETCD使用 3.1、前奏具体操作 3.2、 常用操作 一、ET…...
使用Docker管理linux容器
文章目录 一、使用docker管理镜像 二、使用docker管理容器 一、使用docker管理镜像 1、安装操作系统,我安装的是centOS 7 ,因为centos7有着非常丰富的软件仓库,方便后续安装与docker相关的软件。 2、初始化设置, 关闭防火墙 关闭…...
Chapter03-Authentication vulnerabilities
文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...
Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
【JVM】- 内存结构
引言 JVM:Java Virtual Machine 定义:Java虚拟机,Java二进制字节码的运行环境好处: 一次编写,到处运行自动内存管理,垃圾回收的功能数组下标越界检查(会抛异常,不会覆盖到其他代码…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...
保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!
目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...
C++_哈希表
本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说,直接开始吧! 一、基础概念 1. 哈希核心思想: 哈希函数的作用:通过此函数建立一个Key与存储位置之间的映射关系。理想目标:实现…...
Python常用模块:time、os、shutil与flask初探
一、Flask初探 & PyCharm终端配置 目的: 快速搭建小型Web服务器以提供数据。 工具: 第三方Web框架 Flask (需 pip install flask 安装)。 安装 Flask: 建议: 使用 PyCharm 内置的 Terminal (模拟命令行) 进行安装,避免频繁切换。 PyCharm Terminal 配置建议: 打开 Py…...
