当前位置:首页>学习笔记>React_TS 学习笔记(2-12-1)Mock 模块开发与项目集成

React_TS 学习笔记(2-12-1)Mock 模块开发与项目集成

  • 2026-04-21 14:29:48
React_TS 学习笔记(2-12-1)Mock 模块开发与项目集成

Mock 模块开发与项目集成

    以下内容对React_Ts项目中的Mock服务二次开发与Mock配置进行说明,实现模块开发方式、工具函数、配置说明与项目接入方式。如需进行代码对照,可参考目录下 react19_ts 项目内实际代码,文档与代码会在git上持续补充

    git仓库地址:https://gitee.com/xiaoli-account/react19_ts

    如需先了解服务定位、目录结构、启动方式和热重载原理

    请先阅读 上一篇 【React_TS 学习笔记(2-12)Mock 总览与运行机制


目录

    Mock 模块开发与项目集成/├── 一、开发定位/│   ├── 1.1 这份文档解决什么问题│   └── 1.2 当前开发约定├── 二、模块开发指南/│   ├── 2.1 模块文件结构│   ├── 2.2 响应类型/│   │   ├── 静态响应│   │   └── 动态响应│   └── 2.3 注册新模块├── 三、工具函数库/│   ├── 3.1 common.js - 通用工具│   ├── 3.2 captcha.js - 验证码工具│   └── 3.3 sm4.js - 加密工具├── 四、配置说明/│   ├── 4.1 API 路径前缀│   └── 4.2 统一响应模板├── 五、项目集成/│   ├── 5.1 react19_ts前端项目根目录联合启动脚本│   └── 5.2 前端代理与环境变量├── 六、最佳实践└── 七、常见问题

    一、开发定位

    1.1 这份文档解决什么问题

    当你已经确认 Mock 服务可以正常启动之后,日常更常遇到的问题通常是:

    • 如何新增一个业务模块
    • 如何在已有模块里补接口
    • 如何复用公共工具,避免重复造轮子
    • Mock 模式与前端代理是怎么接起来的

    这份文档就是围绕这些开发动作展开的。

    1.2 当前开发约定

    基于 mock/ 目录当前实现,新增或维护接口时建议遵循以下约定:

    约定
    说明
    按业务领域拆模块
    用户、角色、菜单、登录等分别放在独立文件中
    统一从 module/index.js 注册
    避免“文件建了但接口没有挂载”的问题
    优先复用 utils/
    分页、内存存储、验证码、加密等不要在模块内重复实现
    响应结构尽量统一
    优先使用 config/response.js 中的模板
    模块内只保留业务逻辑
    通用逻辑放工具层,配置放 config/

    二、模块开发指南

    2.1 模块文件结构

    当前每个模块文件遵循统一导出结构:导出一个数组,数组中每项是一个“接口集合对象”,对象的 key 为实际接口路径。

    示例:

    const { success200 } = require("../config/response");const { API_BEFORE_URL } = require("../config/api-url");const Mock = require("mockjs");module.exports = [  {    [API_BEFORE_URL + "/example/list"]: {      method: "get",      response: {        ...success200,        data: Mock.mock({          "list|10": [            {              id: "@id",              name: "@cname",            },          ],        }),      },    },    [API_BEFORE_URL + "/example/detail"]: {      method: "get",      response: (req) => {        const { id } = req.query;        return {          ...success200,          data: { id, name: `Item ${id}` },        };      },    },  },];
    这套结构背后的好处是:
    • module/index.js
       可以统一遍历注册
    • 静态响应和动态响应使用同一套配置格式
    • 每个文件都能按业务聚合一组相关接口

    2.2 响应类型

    静态响应

    适合“只想快速给前端一份固定结构数据”的场景。

    response: {  ...success200,  data: Mock.mock({    "list|10": [{ id"@id" }],  }),}
    特点:
    • 结构最简单
    • 不依赖请求参数
    • 适合静态演示数据或低复杂度接口

    动态响应

    适合“需要读取请求参数、做条件分支、模拟业务校验”的场景。

    response(req) => {  const { page = 1, size = 10 } = req.query;  return {    ...success200,    data: {      list: [],      pagination: { page, size, total100 },    },  };}
    特点:
    • 可以读取 req.queryreq.body
    • 能做参数转换、权限分支、错误分支
    • 更适合真实联调前的业务模拟

    2.3 注册新模块

    新增一个模块的最小步骤如下:

    1. 在 mock/module/ 新建文件,例如 product.js
    2. 在新文件中按统一结构导出接口配置
    3. 在 mock/module/index.js 中引入并注册

    示例:

    const product = require("./product");function setupMock(app) {  registerMockModule(app, [    login,    user,    role,    product,  ]);}

    如果你只新增了文件、但忘记在 module/index.js 注册,接口不会被 Express 挂上去,这是新增模块最常见的问题之一。


    三、工具函数库

    3.1 common.js - 通用工具

    mock/utils/common.js 主要负责请求参数处理、分页、内存存储和常见模拟数据生成。当前导出的主要工具包括:

    函数
    用途
    buildTree(list, options)
    将平铺列表转换成树结构
    clone(data)
    深拷贝数据
    createMemoryStore(initialList, options)
    创建内存数据仓库并提供 CRUD 能力
    createPageData(list, params)
    将列表包装为统一分页结构
    formatDateTime(date)
    格式化日期时间为 yyyy-MM-dd HH:mm:ss
    getNextId(list, idField)
    计算下一个可用 ID
    getRequestData(req)
    合并并统一提取 query / body 参数
    matchText(value, keyword)
    模糊匹配文本
    mockAvatar(seed)
    生成头像地址
    mockCnLabel(prefix, min, max)
    生成带前缀的中文标签
    mockCnName()
    生成中文姓名
    mockCnSentence(min, max)
    生成中文描述语句
    mockCnWord(min, max)
    生成中文词语
    mockCode(prefix)
    生成编码字符串
    mockDateTime()
    生成随机日期时间字符串
    mockEmail()
    生成随机邮箱
    mockGuid()
    生成 GUID
    mockLoginName(prefix)
    生成默认登录账号
    mockPhone()
    生成手机号
    mockPick(options)
    从给定选项中随机取值
    mockVersionCode()
    生成版本号
    toIdArray(ids)
    将单个 ID、逗号分隔字符串或数组统一转为数组
    建议优先场景:
    • 列表接口:createMemoryStore() + createPageData()
    • 请求参数解析:getRequestData(req)
    • 树形数据:buildTree(list)
    • 演示数据构造:各种 mock* 工具

    3.2 captcha.js - 验证码工具

    mock/utils/captcha.js 当前已经被抽离为公共验证码工具,适合多个认证相关模块复用。

    函数
    用途
    createCaptcha()
    生成新的图形验证码,返回 captchaId 、图片与答案
    normalizeCaptchaAnswer(value)
    标准化验证码输入,去空格并转大写
    clearExpiredCaptcha()
    清理过期验证码缓存
    getCaptchaRecord(captchaId)
    读取指定验证码记录
    getLatestCaptchaId()
    获取最近生成的一条验证码 ID
    deleteCaptcha(captchaId)
    删除验证码缓存

    典型用法:

    • 获取验证码接口:调用 createCaptcha()
    • 登录校验接口:读取缓存并比对答案
    • 校验成功或过期后:调用 deleteCaptcha()

    3.3 sm4.js - 加密工具

    mock/utils/sm4.js 提供与前端保持一致的 SM4 加解密能力,目前导出:

    函数
    用途
    encryptBySm4(data)
    将明文加密为 base64 字符串
    decryptBySm4(data)
    将 base64 密文解密为明文

    当前主要用途是:

    • 解密登录请求中的账号、密码、验证码等敏感字段
    • 保证 mock 登录流程和前端登录加密逻辑保持一致

    四、配置说明

    4.1 API 路径前缀

    mock/config/api-url.js 当前内容为:

    export const API_BEFORE_URL = "";

    这表示 Mock 服务自身注册接口时,当前不追加额外前缀。例如:

    [API_BEFORE_URL + "/login"]: { ... }
    最终注册路径就是:
    /login
    需要特别区分的是:
    • Mock 服务内部路径前缀:当前为空字符串
    • 前端代理访问前缀:当前是 /mock-api

    所以浏览器访问和服务实际注册路径并不相同,但这正是代理层负责解决的事情。

    4.2 统一响应模板

    mock/config/response.js 当前提供:

    export const success200 = {  code200,  message"操作成功",  successtrue,};export const success0 = {  code0,  message"操作成功",  successtrue,};export const error500 = {  code500,  message"操作失败",  successtrue,};

    五、项目集成

    5.1 react19_ts 前端项目根目录联合启动脚本

    项目 react19_ts 前端项目根目录通过 mock.startup.script.js 统一启动前端和 Mock 服务:

    // 启动前端const web = run("WEB""npm run dev:mock");// 启动 Mock 服务const mockjs = run("mock""npm --prefix mock run mock");

    因此在 react19_ts 前端项目根目录执行:

    npm run mock
    实际效果是:
    1. 前端以 Mock 模式启动
    2. mock/子项目启动带热重载的 Express 服务
    3. Ctrl + C 时两个进程一起关闭

    5.2 前端代理与环境变量

    当前 .env.mock 中的关键配置是:

    VITE_API_BASE_URL=/mock-apiVITE_APP_API_URL=http://localhost:3000
    它的实际链路是:
    浏览器请求: /mock-api/login        ↓Vite 代理转发        ↓http://localhost:3000/login
    因此如果你在联调时看到:
    • 浏览器请求地址是 /mock-api/*
    • Mock 服务注册地址是 /login/userInfo 这类裸路径

    这并不冲突,而是当前实现的正常表现。


    六、最佳实践

    • 按业务领域拆模块,不要把所有接口堆到一个文件中。
    • 模块里只保留业务逻辑,通用逻辑优先下沉到 utils/
    • 列表接口优先复用 createMemoryStore() 与 createPageData(),不要每次手写分页。
    • 请求参数尽量统一通过 getRequestData(req) 解析,减少 GET / POST 分支判断。
    • 验证码、SM4 解密这类跨模块逻辑不要重复实现,优先复用公共工具。
    • 当模块超过单文件可维护范围时,例如大于 300 行,建议考虑按领域或能力创建模块目录,而后将模块内容再次细节拆分。
    • 改完接口后优先观察 mock-watch 日志,确认服务确实完成了重启。

    七、常见问题

    Q: 新增模块文件后接口不生效?A: 先检查是否已经在 mock/module/index.js 中引入并注册。只创建文件但没注册,Express 不会自动挂载。

    Q: 我明明访问的是 /mock-api/login,为什么 Mock 模块里写的是 /loginA: 因为 /mock-api 是前端代理前缀,不是 Mock 服务自身的接口前缀。当前 API_BEFORE_URL 为空字符串,所以服务内部实际注册的是 /login

    Q: 如何模拟带参数的动态响应?A: 使用函数式 response: (req) => { ... },并通过 req.queryreq.body 或 getRequestData(req) 读取参数。

    Q: 如何快速做一个可增删改查的列表模块?A: 优先从 createMemoryStore() 入手,再结合 createPageData() 处理分页;这比在模块里手写数组操作更稳定也更统一。

    最新文章

    随机文章

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-04-21 20:26:49 HTTP/2.0 GET : https://67808.cn/a/482605.html
    2. 运行时间 : 0.105183s [ 吞吐率:9.51req/s ] 内存消耗:4,686.41kb 文件加载:140
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=5210b6172bbdb3ec0c3c659efe1537dd
    1. /yingpanguazai/ssd/ssd1/www/no.67808.cn/public/index.php ( 0.79 KB )
    2. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/autoload.php ( 0.17 KB )
    3. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/autoload_real.php ( 2.49 KB )
    4. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/platform_check.php ( 0.90 KB )
    5. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
    6. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/autoload_static.php ( 4.90 KB )
    7. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
    8. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
    9. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
    10. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
    11. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
    12. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
    13. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
    14. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
    15. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
    16. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
    17. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
    18. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
    19. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
    20. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
    21. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
    22. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/provider.php ( 0.19 KB )
    23. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
    24. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
    25. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
    26. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/common.php ( 0.03 KB )
    27. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
    28. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
    29. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/app.php ( 0.95 KB )
    30. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/cache.php ( 0.78 KB )
    31. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/console.php ( 0.23 KB )
    32. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/cookie.php ( 0.56 KB )
    33. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/database.php ( 2.48 KB )
    34. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
    35. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/filesystem.php ( 0.61 KB )
    36. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/lang.php ( 0.91 KB )
    37. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/log.php ( 1.35 KB )
    38. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/middleware.php ( 0.19 KB )
    39. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/route.php ( 1.89 KB )
    40. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/session.php ( 0.57 KB )
    41. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/trace.php ( 0.34 KB )
    42. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/view.php ( 0.82 KB )
    43. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/event.php ( 0.25 KB )
    44. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
    45. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/service.php ( 0.13 KB )
    46. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/AppService.php ( 0.26 KB )
    47. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
    48. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
    49. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
    50. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
    51. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
    52. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/services.php ( 0.14 KB )
    53. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
    54. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
    55. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
    56. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
    57. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
    58. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
    59. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
    60. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
    61. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
    62. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
    63. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
    64. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
    65. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
    66. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
    67. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
    68. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
    69. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
    70. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
    71. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
    72. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
    73. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
    74. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
    75. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
    76. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
    77. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
    78. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
    79. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
    80. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
    81. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
    82. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
    83. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/Request.php ( 0.09 KB )
    84. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
    85. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/middleware.php ( 0.25 KB )
    86. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
    87. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
    88. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
    89. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
    90. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
    91. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
    92. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
    93. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
    94. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
    95. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
    96. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
    97. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
    98. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
    99. /yingpanguazai/ssd/ssd1/www/no.67808.cn/route/app.php ( 1.72 KB )
    100. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
    101. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
    102. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
    103. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/controller/Index.php ( 4.81 KB )
    104. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/BaseController.php ( 2.05 KB )
    105. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
    106. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
    107. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
    108. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
    109. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
    110. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
    111. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
    112. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
    113. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
    114. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
    115. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
    116. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
    117. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
    118. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
    119. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
    120. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
    121. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
    122. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
    123. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
    124. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
    125. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
    126. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
    127. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
    128. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
    129. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
    130. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
    131. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
    132. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
    133. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
    134. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
    135. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
    136. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
    137. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
    138. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
    139. /yingpanguazai/ssd/ssd1/www/no.67808.cn/runtime/temp/6df755f970a38e704c5414acbc6e8bcd.php ( 12.06 KB )
    140. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
    1. CONNECT:[ UseTime:0.000436s ] mysql:host=127.0.0.1;port=3306;dbname=no_67808;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000563s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000434s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.001137s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000558s ]
    6. SELECT * FROM `set` [ RunTime:0.000248s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000579s ]
    8. SELECT * FROM `article` WHERE `id` = 482605 LIMIT 1 [ RunTime:0.000460s ]
    9. UPDATE `article` SET `lasttime` = 1776774409 WHERE `id` = 482605 [ RunTime:0.000692s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.001224s ]
    11. SELECT * FROM `article` WHERE `id` < 482605 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000467s ]
    12. SELECT * FROM `article` WHERE `id` > 482605 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000418s ]
    13. SELECT * FROM `article` WHERE `id` < 482605 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.005051s ]
    14. SELECT * FROM `article` WHERE `id` < 482605 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001834s ]
    15. SELECT * FROM `article` WHERE `id` < 482605 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001438s ]
    0.106624s