安装依赖

项目中使用到一下依赖,请提前安装

npm install msw lodash axios

开启mock

定义mock,创建 src/mock/index.ts

import _ from "lodash";
import Mock from "mockjs";
import { http, HttpResponse } from "msw";
import { setupWorker } from "msw/browser"; /**
* 处理数组,以便于模拟分页
* @param {Array} dataSource - 数据源数组
* @param {Object} params - 分页参数
* @param {number} params.current - 当前页码
* @param {number} params.pageSize - 每页条数
* @returns {Object} 包含分页数据和分页信息的对象
*/
const paginate = (dataSourceTemp, { current = 1, pageSize = 10 } = {}) => {
const dataSource = _.cloneDeep(dataSourceTemp); // 确保 current 和 pageSize 是有效的数字
current = Math.max(1, parseInt(current) || 1);
pageSize = Math.max(1, parseInt(pageSize) || 10); // 计算起始索引和结束索引
const startIndex = (current - 1) * pageSize;
const endIndex = startIndex + pageSize; // 获取当前页数据
const data = dataSource.slice(startIndex, endIndex); return {
data,
pagination: {
current,
pageSize,
total: dataSourceTemp.length,
pages: Math.ceil(dataSource.length / pageSize),
},
};
}; // 模拟数据库
const dataBase = Mock.mock({
"user|20-30": [
{
"id|+1": 1, // 自增ID
name: "@cname", // 中文姓名
"age|18-60": 1, // 18-60岁的随机年龄
"salary|1000-5000": 1, // 随机薪资
address: "@county(true)", // 随机地址
},
],
}); // 定义统一返回格式(对,就像你真的在写接口一样)
const JsonResult = {
error(msg: string) {
return HttpResponse.json({
code: 0,
msg,
});
},
sucess(data) {
return HttpResponse.json({
code: 1,
data,
});
},
}; // 处理器
const handlers = [
http.get("/api/user", ({ request }) => {
const url = new URL(request.url);
// 获取特定的查询参数
const current = Number(url.searchParams.get("current"));
const pageSize = Number(url.searchParams.get("pageSize"));
return JsonResult.sucess({
total: dataBase.user.length,
list: paginate(dataBase.user, { current, pageSize }).data,
});
}),
]; export const enableMocking = async () => {
if (process.env.NODE_ENV !== "development") return;
const worker = setupWorker(...handlers);
await worker.start({
onUnhandledRequest(request, print) {
// 决定如何对未处理的请求做出反应: 如果url不包含/api的内容 就返回,否则就警告
if (request.url.indexOf("/api") === -1) return;
print.warning();
},
});
};

并在项目入口中启用,以 (vite 创建的 )vue 项目为例

import { createApp } from "vue";
import App from "./App.vue";
import { enableMocking } from "./mock"; enableMocking().then(() => {
const app = createApp(App);
app.use(ArcoVue);
app.mount("#app");
});

页面使用

同样在 vue 项目的基础上,使用了arco design

home.vue

<template>
<a-table
:columns="columns"
:data="dataRender"
:pagination="pagination"
@page-change="onPageChange"
/>
</template> <script setup lang="ts">
import { reactive, ref } from "vue";
import axios from "axios"; // 分页信息
const pagination = reactive({
current: 1,
pageSize: 8,
total: 5,
showTotal: true,
}); // 表头
const columns = [
{
title: "姓名",
dataIndex: "name",
},
{
title: "年龄",
dataIndex: "age",
},
{
title: "工资",
dataIndex: "salary",
},
{
title: "住址",
dataIndex: "address",
},
]; // 请求接口
const dataRender = ref([]);
const syncDataRender = async () => {
const {
data: { data },
} = await axios.get("/api/user", {
params: {
current: pagination.current,
pageSize: pagination.pageSize,
},
});
dataRender.value = data.list;
pagination.total = data.total;
};
syncDataRender(); // 监听翻页
const onPageChange = async (current) => {
pagination.current = current;
syncDataRender();
};
</script>

nsw与mock 模拟分页接口的更多相关文章

  1. Mock模拟后台数据接口--再也不用等后端的API啦

    ok,在开发中经常需要从后台获取数据,那么有时候后台的数据接口并没有写好,所以这时候,就需要自己模拟数据接口,来实现前端逻辑, 今天数的就是阿里巴巴的一款mock产品,很好用的哦!!!! ok!这是我 ...

  2. 使用electron开发一个h5的客户端应用创建http服务模拟后台接口mock

    使用electron开发一个h5的客户端应用创建http服务模拟后端接口mock 在上一篇<electron快速开始>里讲述了如何快速的开始一个electron的应用程序,既然electr ...

  3. Easy-Mock模拟get接口和post接口实例

    1.先创建项目,再新建接口 创建项目入口:首页右下角 + 按钮 创建接口入口如下图: 关于mock的语法这里不做说明,可查看mock.js官方查看更详情的资料. 小tip:在Easy-Mock里面支持 ...

  4. 使用whistle模拟cgi接口异常:错误码、502、慢网速、超时

    绝大多数程序只考虑了接口正常工作的场景,而用户在使用我们的产品时遇到的各类异常,全都丢在看似 ok 的 try catch 中.如果没有做好异常的兼容和兜底处理,会极大的影响用户体验,严重的还会带来安 ...

  5. 深入浅出的webpack4构建工具---比mock模拟数据更简单的方式(二十一)

    如果想要了解mock模拟数据的话,请看这篇文章(https://www.cnblogs.com/tugenhua0707/p/9813122.html) 在实际应用场景中,总感觉mock数据比较麻烦, ...

  6. wiremock 模拟服务接口提供前端使用

    前后端分离同步开发时,如果前端需要等后端把接口都开发完了再去动工的话,项目周期会拉长. 以前开发时,一般前期是先把接口文档写的差不多了,要么是让前端自己构造模拟数据,要么是后端在开个控制器专门提供模拟 ...

  7. Python 的mock模拟测试介绍

    如何不靠耐心测试 可能我们正在写一个社交软件并且想测试一下"发布到Facebook的功能",但是我们不希望每次运行测试集的时候都发布到Facebook上. Python的unitt ...

  8. dotnet 如何在 Mock 模拟 Func 判断调用次数

    在 dotnet 程序有很好用的 Mock 框架,可以用来模拟各种接口和抽象类,可以用来测试某个注入接口的被调用次数和被调用时传入参数.本文告诉大家如何在 Mock 里面模拟一个 Func 同时模拟返 ...

  9. Mock模拟数据,前后端分离

    安装 使用npm安装: npm install mockjs; 或直接<script src="http://mockjs.com/dist/mock.js">< ...

  10. vue-cli实现异步请求返回mock模拟数据

    在前后端分离开发的过程中,前端开发过程中,页面的数据显示一般都是写死的静态数据,也就是没有经过接口,直接写死在代码中的,在后端给出接口后,再替换为接口数据,为了减少对接成本,mock就出现了.通过预先 ...

随机推荐

  1. 由 MCP 官方推出的 C# SDK,使 .NET 应用程序、服务和库能够快速实现与 MCP 客户端和服务器交互!

    前言 今天大姚给大家推荐一个由 MCP 官方推出的 C# SDK,使 .NET 应用程序.服务和库能够快速实现与 MCP 客户端和服务器交互:MCP C# SDK. 项目介绍 MCP C# SDK 是 ...

  2. Java8 Lambda Collection 的常见用法

    import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.ListUtil; import cn.huto ...

  3. 从 Excel 到你的表格应用:数据验证功能的嵌入实践指南

    前言: 随着信息化的不断发展,传统表格软件已无法满足用户对便携性.数据自动化管理等日益复杂的要求,将电子表格与其他系统结合.开发自己的表格应用已成为愈发火热的趋势. 然而,当企业需要将 Excel 的 ...

  4. 我们离Agent终极形态又近了一步:全球首个支持谷歌A2A(Agent-to-Agent)协议的智能体注册网站上线Product Hunt,未来智能体协作网络

    AI 的终点,不是更强大的对话,而是一个真正协作的智能体社会. 这种形态已经在悄然出现. 全球首个支持 Google A2A(Agent-to-Agent)协议 的智能体注册与协作平台同步上线Prod ...

  5. 记一次SQL隐式转换导致精度丢失问题的排查 → 不规范就踩坑

    开心一刻 刚毕业的侄子给我发消息侄子:叔,人生太难了我:怎么呢?侄子:工作太难了,感情也太难了,怎么什么都这么难我:你还小啊侄子:大了就不难了?我:大了你就习惯了 问题复现 先准备表:数据源( tbl ...

  6. linux 安装jdk8

    参考:https://www.cnblogs.com/raoyulu/p/13265419.html 一.卸载现用的JDK 1.查看Linux自带的JDK是否已安装 查看是否安装openjdk jav ...

  7. servlet 转发与重定向

    目录 转发 重定向 重定向与转发本质都是跳转到新的URL 重定向与转发的本质区别在于:转发是一个服务端的行为,而重定向是一个浏览器的行为. 下面是图解: 转发 转发的作用在服务器端,将请求发送给服务器 ...

  8. 【记录】LangChain|Ollama结合LangChain使用的速通版(包含代码以及切换各种模型的方式)

    官方教程非常长,我看了很认可,但是看完了之后呢就需要一些整理得当的笔记让我自己能更快地找到需求.所以有了这篇文章.[写给自己看的,里面半句废话的解释都没有,如果看不懂的话直接看官方教程再看我的] 我是 ...

  9. 使用离线部署32B模型实现OpenDeepWiki项目代码自动分析与文档生成

    背景介绍 在企业环境中,我们经常需要对公司项目代码进行分析和文档生成.然而,考虑到代码的保密性,将代码上传至公共AI平台存在安全隐患.为解决这一问题,我们可以在公司内部GPU服务器上部署强大的大语言模 ...

  10. Time Series in pandas

    Time Series import pandas as pd import numpy as np Date and Time data types and tools from datetime ...