当前位置:首页>python>PythonAI UI 生成器 - 简化版 Google Stitch

PythonAI UI 生成器 - 简化版 Google Stitch

  • 2026-06-28 07:38:09
PythonAI UI 生成器 - 简化版 Google Stitch

AI UI 生成器 - 简化版 Google Stitch

学在坚持公众号

简介

基于大模型(Qwen3.5-397B)实现的文本转UI工具。输入自然语言描述,AI自动生成完整的HTML页面代码,并在浏览器中实时预览。支持对话式迭代修改,像和设计师对话一样调整界面。


核心原理

用户输入文字描述      ↓System Prompt(约束输出格式)+ 用户Prompt      ↓调用 Qwen3.5-397B API      ↓返回完整HTML代码      ↓保存为临时文件 → 浏览器打开预览      ↓用户提出修改 → 追加到对话历史 → 再次调用API → 更新预览

环境要求

项目
要求
Python
3.7+
依赖
requests(通常已自带)
网络
需要能访问API接口
浏览器
任意现代浏览器(用于预览)
pip install requests

运行方式

cd python/ngorkpython ai_ui_generator.py

功能说明

功能
说明
文本生成UI
输入描述,AI生成完整HTML+CSS页面
快捷模板
一键填入常用场景(登录页/仪表盘/商品卡片/简历)
对话式修改
基于当前代码提出修改要求,AI增量修改
浏览器预览
生成后自动在默认浏览器中打开
代码查看
左侧深色代码区实时显示生成的HTML
导出HTML
保存为本地HTML文件

界面布局

┌──────────────────────────────────────────────────────┐│  AI UI 生成器                                         │├────────────────────────┬─────────────────────────────┤│  描述你想要的UI         │                             ││  ┌──────────────────┐  │      实时预览               ││  │ 输入框(多行)    │  │                             ││  └──────────────────┘  │   (自动在浏览器中打开)      ││                        │                             ││  [登录页][仪表盘]...   │                             ││                        │                             ││  [生成UI][修改当前]    │      预览信息                ││  [浏览器预览][导出]    │   ✅ 代码已生成              ││                        │   💡 输入修改要求可迭代      ││  生成的代码            │                             ││  ┌──────────────────┐  │                             ││  │ <!DOCTYPE html>  │  │                             ││  │ <html>...        │  │                             ││  │ (深色代码区)      │  │                             ││  └──────────────────┘  │                             │└────────────────────────┴─────────────────────────────┘

测试步骤

测试1:基本生成

  1. 启动程序:python ai_ui_generator.py
  2. 在输入框中输入:一个现代风格的登录页面,有用户名和密码输入框,登录按钮
  3. 点击「🚀 生成UI」
  4. 等待10-30秒(API调用)
  5. 预期结果:
    • 状态栏显示 ✅ 生成完成 (xxx字符)
    • 左侧代码区显示完整HTML代码
    • 浏览器自动打开预览页面
    • 预览页面是一个美观的登录表单

测试2:快捷模板

  1. 点击顶部「仪表盘」按钮
  2. 输入框自动填入仪表盘描述
  3. 点击「🚀 生成UI」
  4. 预期结果:生成一个带导航栏、统计卡片、表格的仪表盘页面

测试3:对话式修改

  1. 先完成测试1(生成登录页)
  2. 在输入框中输入:把背景改成蓝紫渐变色,按钮改成圆角
  3. 点击「🔄 修改当前」
  4. 预期结果:
    • AI基于当前代码进行修改
    • 浏览器刷新后看到背景变成渐变色
    • 按钮变成圆角样式
    • 其他元素保持不变

测试4:连续迭代

  1. 接测试3,继续输入:增加一个"忘记密码"链接和第三方登录按钮(微信、QQ)
  2. 点击「🔄 修改当前」
  3. 预期结果:在原有基础上增加了新元素,之前的渐变背景和圆角按钮保持不变

测试5:导出

  1. 生成满意的UI后
  2. 点击「💾 导出HTML」
  3. 选择保存路径
  4. 用浏览器打开导出的文件,确认效果一致

测试6:错误处理

  1. 断开网络
  2. 点击「🚀 生成UI」
  3. 预期结果:90秒后提示"请求超时",不会崩溃

代码架构

ai_ui_generator.py├── API_CONFIG          # API配置(endpoint/key/model)├── SYSTEM_PROMPT       # 系统提示词(约束输出格式)└── AIUIGenerator       # 主类    ├── _create_ui()    # 构建GUI界面    ├── _generate()     # 新建生成(清空历史)    ├── _modify()       # 迭代修改(追加历史)    ├── _call_api()     # 调用LLM API(子线程)    ├── _extract_html() # 从响应中提取HTML代码    ├── _on_success()   # 生成成功回调    ├── _on_error()     # 错误处理    ├── _save_and_preview() # 保存临时文件+浏览器打开    └── _export()       # 导出HTML文件

关键设计

设计点
实现方式
原因
异步调用
threading子线程
API调用耗时长,不阻塞GUI
对话历史
self.history列表
修改时保持上下文,AI知道当前代码
代码提取
正则去除markdown包裹
模型有时会用html包裹代码
预览方式
临时文件+webbrowser
Tkinter无内嵌浏览器,用系统浏览器最可靠
System Prompt
严格约束输出格式
确保只输出代码,不输出解释文字

System Prompt 设计

你是一个专业的前端UI设计师和开发者。根据用户的描述生成完整的HTML页面代码。规则:1. 生成完整的HTML文件(包含<!DOCTYPE html>、<head>、<body>)2. 使用内联CSS或<style>标签,不依赖外部文件3. 设计要现代、美观、响应式4. 只输出HTML代码,不要任何解释文字5. 不要用```html```包裹,直接输出代码6. 中文界面优先使用 -apple-system, 'Microsoft YaHei' 字体7. 配色要协调,间距要合理

这个Prompt的关键约束:

  • "完整HTML文件":确保生成的代码可以直接在浏览器运行
  • "不依赖外部文件":不引用CDN,离线也能预览
  • "只输出代码":避免模型输出解释文字污染代码
  • "不要markdown包裹":减少后处理工作

API调用示例

import requestsresp = requests.post("https://xxxx/shop/v1/chat/completions",    headers={"Authorization""Bearer 4wWwsCTKCn4wtctz","Content-Type""application/json"    },    json={"model""qwen3.5-397b","messages": [            {"role""system""content""你是前端专家,只输出HTML代码..."},            {"role""user""content""生成一个登录页面"}        ],"temperature"0.7,"max_tokens"4000    },    timeout=90)html = resp.json()['choices'][0]['message']['content']

对话式修改原理

# 第一次生成history = [    {"role""system""content": SYSTEM_PROMPT},    {"role""user""content""生成登录页面"},]# API返回HTML → 追加到historyhistory.append({"role""assistant""content""<html>..."})# 第二次修改history.append({"role""user""content""把背景改成蓝色"})# API看到完整对话历史,知道当前代码是什么,只修改背景色# 返回修改后的完整HTML

关键:每次修改都带上完整对话历史,AI能"记住"当前代码状态,做增量修改而不是重新生成。


常见问题

Q: 生成速度慢?

A: 397B参数模型推理较慢,通常需要10-30秒。这是正常的。

Q: 生成的代码不完整?

A: max_tokens 设为4000,复杂页面可能被截断。可以在代码中调大到8000。

Q: 修改时AI重新生成了整个页面?

A: 在修改提示中明确说"只修改xxx,其他保持不变"效果更好。

Q: 预览页面空白?

A: 检查代码区是否有有效HTML。如果API返回了非HTML内容,_extract_html() 会尝试修复。

Q: 能生成React/Vue代码吗?

A: 可以在输入中指定,如"用React组件方式生成",但预览需要额外构建步骤。


与Google Stitch对比

功能
Google Stitch
本工具
文本→UI
✅ Gemini驱动
✅ Qwen3.5驱动
图片→UI
✅ 多模态
❌ 纯文本模型
实时预览
✅ 内嵌iframe
✅ 浏览器打开
对话修改
语音输入
✅ Voice Canvas
多屏原型
✅ Flow
设计系统
✅ Material 3
⚠️ 靠Prompt约束
导出代码
✅ MCP协议
✅ HTML文件
费用
免费(有配额)
免费(API额度内)

后续可扩展

  • [ ] 支持指定CSS框架(Tailwind/Bootstrap)
  • [ ] 增加历史记录面板(回退到之前的版本)
  • [ ] 支持多页面项目生成
  • [ ] 接入多模态模型支持图片输入
  • [ ] 流式输出(边生成边显示)
  • [ ] 内嵌WebView预览(不依赖外部浏览器)
  • [ ] 组件库模式(生成可复用组件)
"""ChatFlask - AI对话Web应用Flask后端:API代理(解决CORS)+ 流式输出(SSE)+ 页面路由"""from flask import Flask, request, Response, render_template, jsonify, stream_with_contextimport requestsimport jsonimport timeimport uuidapp = Flask(name)内存存储对话历史conversations = {}  # {conv_id: {"title": str, "messages": [], "created_at": float}}@app.route('/')def index():return render_template('index.html')@app.route('/api/chat', methods=['POST'])def chat():"""API代理 - 流式输出"""data = request.jsonendpoint = data.get('endpoint''')api_key = data.get('api_key''sk-')model = data.get('model''qwen-plus')messages = data.get('messages', [])temperature = data.get('temperature'0.7)max_tokens = data.get('max_tokens'4000)top_p = data.get('top_p'0.9)stream = data.get('stream'True)if not endpoint or not api_key:    return jsonify({'error''请配置API地址和Key'}), 400headers = {    'Authorization'f'Bearer {api_key}',    'Content-Type''application/json',}payload = {    'model': model,    'messages': messages,    'temperature': temperature,    'max_tokens': max_tokens,    'top_p': top_p,    'stream': stream,}if stream:    return Response(        stream_with_context(_stream_response(endpoint, headers, payload)),        content_type='text/event-stream',        headers={'Cache-Control''no-cache''X-Accel-Buffering''no'}    )else:    try:        resp = requests.post(endpoint, headers=headers, json=payload, timeout=90)        if resp.status_code != 200:            return jsonify({'error'f'API错误: {resp.status_code}{resp.text[:200]}'}), resp.status_code        result = resp.json()        content = result['choices'][0]['message']['content']        return jsonify({'content': content})    except requests.Timeout:        return jsonify({'error''请求超时'}), 504    except Exception as e:        return jsonify({'error'str(e)}), 500def _stream_response(endpoint, headers, payload):"""流式代理转发"""try:resp = requests.post(endpoint, headers=headers, json=payload, stream=True, timeout=90)if resp.status_code != 200:yield f"data: {json.dumps({'error'f'API错误: {resp.status_code}'})}\n\n"return    for line in resp.iter_lines():        if line:            line_str = line.decode('utf-8')            if line_str.startswith('data: '):                data_str = line_str[6:]                if data_str.strip() == '[DONE]':                    yield f"data: {json.dumps({'content''''done'True})}\n\n"                    break                try:                    chunk = json.loads(data_str)                    delta = chunk.get('choices', [{}])[0].get('delta', {})                    content = delta.get('content''')                    if content:                        yield f"data: {json.dumps({'content': content, 'done'False})}\n\n"                except json.JSONDecodeError:                    continueexcept requests.Timeout:    yield f"data: {json.dumps({'error''请求超时'})}\n\n"except Exception as e:    yield f"data: {json.dumps({'error'str(e)})}\n\n"@app.route('/api/chat/sync', methods=['POST'])def chat_sync():"""非流式调用(备用)"""data = request.jsonendpoint = data.get('endpoint''')api_key = data.get('api_key''')headers = {'Authorization'f'Bearer {api_key}''Content-Type''application/json'}payload = {    'model': data.get('model''qwen-plus'),    'messages': data.get('messages', []),    'temperature': data.get('temperature'0.7),    'max_tokens': data.get('max_tokens'4000),    'top_p': data.get('top_p'0.9),    'stream'False,}try:    resp = requests.post(endpoint, headers=headers, json=payload, timeout=90)    result = resp.json()    content = result.get('choices', [{}])[0].get('message', {}).get('content''')    # 有些模型把内容放在reasoning_content里    if not content:        content = result.get('choices', [{}])[0].get('message', {}).get('reasoning_content''')    return jsonify({'content': content})except Exception as e:    return jsonify({'error'str(e)}), 500=== 对话历史管理 ===@app.route('/api/conversations', methods=['GET'])def list_conversations():conv_list = [{'id': k, 'title': v['title'], 'created_at': v['created_at']}for k, v in conversations.items()]conv_list.sort(key=lambda x: x['created_at'], reverse=True)return jsonify(conv_list)@app.route('/api/conversations', methods=['POST'])def create_conversation():conv_id = str(uuid.uuid4())[:8]conversations[conv_id] = {'title''新对话''messages': [], 'created_at': time.time()}return jsonify({'id': conv_id})@app.route('/api/conversations/<conv_id>', methods=['GET'])def get_conversation(conv_id):if conv_id in conversations:return jsonify(conversations[conv_id])return jsonify({'error''对话不存在'}), 404@app.route('/api/conversations/<conv_id>', methods=['PUT'])def update_conversation(conv_id):if conv_id not in conversations:return jsonify({'error''对话不存在'}), 404data = request.jsonif 'title' in data:conversations[conv_id]['title'] = data['title']if 'messages' in data:conversations[conv_id]['messages'] = data['messages']return jsonify({'status''ok'})@app.route('/api/conversations/<conv_id>', methods=['DELETE'])def delete_conversation(conv_id):if conv_id in conversations:del conversations[conv_id]return jsonify({'status''ok'})if name == 'main':app.run(host='0.0.0.0', port=5000, debug=True)

最新文章

随机文章

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