# PocketMocker **Repository Path**: mirrors/PocketMocker ## Basic Information - **Project Name**: PocketMocker - **Description**: PocketMocker 是一款“所见即所得”的浏览器端可视化 HTTP Mock 工具 - **Primary Language**: TypeScript - **License**: MIT - **Default Branch**: main - **Homepage**: https://www.oschina.net/p/pocketmocker - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-03 - **Last Updated**: 2025-12-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
## PocketMocker 是什么? **PocketMocker 是一款前端开发专用的页面内 HTTP 控制器。** 简单来说,让你直接决定接口返回什么——无需改后端,无需起 Mock Server。 它提供了一个**可视化控制面板**直接嵌入浏览器,让你实时拦截和操作 HTTP 响应,通过**即时看到变化**来快速构建健壮的 UI。 --- ## 为什么选择 PocketMocker? ### 轻松 Mock 告别手写 Mock 代码。自动拦截请求,智能生成数据,一键导入 API 文档。 ### 完全掌控 * **时序控制**:模拟网络延迟、竞态条件 * **状态控制**:强制 500 错误、401 未授权、空响应 * **载荷注入**:测试边界数据和异常情况 ### 即时调试 在浏览器中实时编辑响应,立即看到 UI 更新。无需切换工具,保持开发心流。 --- ## 实际应用场景 ### 即时状态切换 一键切换**成功**、**错误(500/404)**或**空数据**状态。验证您的 UI 如何处理加载动画或错误提示,无需修改任何代码。 ### 实时数据调整 需要测试超长用户名?缺失的头像?或特定的价格格式?直接在面板中编辑响应 JSON,立即看到 UI 更新。 ### 边界情况验证 模拟网络延迟、超时错误或未授权(401)响应,确保您的应用优雅地处理异常情况。 --- ## 安装 ```bash npm install pocket-mocker --save-dev # 或者 yarn add pocket-mocker -D # 或者 pnpm add pocket-mocker -D ``` --- ## 快速开始 ### 方式一:零配置使用(本地模式) 适合个人开发或快速尝试。直接在项目的入口文件中引入并启动: ```javascript import { pocketMock } from 'pocket-mocker'; // 仅在开发环境中启动 if (process.env.NODE_ENV === 'development') { pocketMock(); } ``` 启动项目后,页面右下角会出现 **PocketMocker** 浮窗。 ### 方式二:团队协作模式(Vite 插件)🔥 推荐 适合生产级项目。通过 Vite 插件打通文件系统,将 Mock 规则保存为配置文件,方便团队共享。 **1. 在入口文件引入** ```javascript import { pocketMock } from 'pocket-mocker'; if (process.env.NODE_ENV === 'development') { pocketMock(); } ``` **2. 配置 `vite.config.ts`** ```typescript import { defineConfig } from 'vite'; import pocketMockPlugin from 'pocket-mocker/vite-plugin'; export default defineConfig({ plugins: [ pocketMockPlugin() ] }); ``` **3. 启动开发** 运行 `npm run dev`。PocketMock 会自动检测插件环境并切换到 **服务器模式**。 --- ## 进阶功能 ### URL 模式匹配 PocketMock 支持强大的 URL 模式来模拟复杂的 API: - **路径参数**: `/api/users/:id` → 匹配 `/api/users/123`, `/api/users/john` - **通配符**: `/api/*` → 匹配 `/api/users`, `/api/users/123/posts` - **混合模式**: `/api/:version/users/*/profile` → 匹配 `/api/v1/users/123/profile` 在模拟函数中获取捕获的参数: ```javascript (req) => { const { id, version } = req.params; const { include } = req.query; return { id: parseInt(id), version, includeAuthor: include === 'true' }; } ``` ### 智能 Mock 数据生成 PocketMock 内置强大的智能生成器,使用简单语法即可生成逼真的测试数据。 #### 快速体验 ```javascript { "user|10": {. // → 生成10个用户 "id": "@guid", // → "550e8400-e29b-41d4" "name": "@name", // → "张三" "email": "@email", // → "zhangsan@example.com" "avatar": "@image(100x100)", // → "https://via.placeholder.com/100x100" "age": "@integer(18,60)", // → 25 "role": "@pick(管理员,用户)" // → "管理员" } } ``` #### 常用生成器 | 语法 | 功能 | 示例 | |------|------|------| | `@guid` | 唯一标识 | `"f47ac..."` | | `@name` | 随机姓名 | `"张三"` | | `@email` | 邮箱地址 | `"user@example.com"` | | `@integer(min,max)` | 随机整数 | `@integer(1,100)` → `42` | | `@pick(A,B,C)` | 随机选择 | `@pick(苹果,香蕉)` → `"苹果"` | | `@image(100x100)` | 占位图片 | `"https://via.placeholder.com/100x100"` | #### 更多功能