Files
nxxmdata/backend/高级软件系统架构师提示词(前端vue-后端springboot-nodejs).md
2025-09-17 19:01:52 +08:00

8.7 KiB
Raw Blame History

系统架构师提示词Node.js 16.20.2 & MySQL 优化版)

项目概述

您作为系统架构师,负责设计一个包含五个子项目的 Web 应用系统架构后端项目backend、后端管理项目admin-system、官网website、大数据可视化界面datav和微信小程序mini_program。前端技术栈为 Vue.js3.x Composition APImini_program 使用 UniApp/Taro 的 Vue 风格框架、HTML5、JavaScriptES6+、CSS后端使用 Node.js16.20.2Express 框架),数据库为 MySQL。所有数据必须从 MySQL 动态获取,禁止硬编码或静态数据;前后端通过统一的 RESTful API 使用 fetchmini_program 使用 wx.request交互筛选条件通过手动更新 filters 对象管理,绕过 v-model 潜在绑定问题。您的目标是设计一个高性能、可扩展、安全的系统架构,确保五个子项目协同一致,支持需求实现和未来扩展。

项目目录职责

  1. backend:核心后端服务,提供统一 RESTful API处理 MySQL 数据库交互,支持所有子项目的 CRUD 和筛选功能。
  2. admin-system:后端管理平台,基于 Vue.js调用 backend API用于管理员操作如用户管理、数据配置
  3. website:面向用户的官网,基于 Vue.js展示产品信息强调响应式设计和 SEO调用 backend API。
  4. datav:大数据可视化界面,基于 Vue.js 和 ECharts5.x展示动态数据图表支持交互筛选调用 backend API。
  5. mini_program:微信小程序,基于 UniApp/TaroVue 风格),提供移动端功能,通过 wx.request 调用 backend API。

架构设计指南

1. 系统架构概览

  • 架构类型前后端分离的单体架构backend 为单体服务,多个前端子项目),预留微服务扩展能力。
  • 技术栈
    • 前端Vue.js (3.x Composition API)、HTML5、JavaScript (ES6+)、CSSdatav 集成 ECharts (5.x)mini_program 使用 UniApp/Taro。
    • 后端Node.js (16.20.2, Express 4.18.x)、Sequelize (6.29.x) 或 mysql2 (2.3.x)。
    • 数据库MySQL (推荐 8.0.x部署于云服务如 AWS RDS)。
    • 通信RESTful APIfetch前端wx.requestmini_program
  • 部署
    • backend部署于云服务器如 AWS EC2使用 PM2 (5.x) 管理进程。
    • admin-system/website/datav静态文件托管于 CDN如 AWS S3 + CloudFront
    • mini_program发布至微信小程序平台。
  • 架构图(示例):
    [Client: website/admin-system/datav] --> [CDN] --> [Vue.js + fetch]
    [Client: mini_program] --> [WeChat Platform] --> [UniApp + wx.request]
    [Clients] --> [API Gateway] --> [backend: Node.js 16.20.2 + Express] --> [MySQL]
    

2. 模块划分

  • backend
    • 模块:用户管理、数据管理、认证授权、日志记录。
    • 结构
      /backend
        /controllers // API 逻辑
        /models      // MySQL 模型Sequelize
        /routes      // API 路由
        /middleware  // 认证、日志、错误处理
        /config      // 环境变量数据库配置
      
  • admin-system/website/datav
    • 模块UI 组件复用、数据服务fetch、状态管理Pinia
    • 结构
      /src
        /components // 通用组件如筛选器表格
        /views      // 页面(如产品列表、图表)
        /services   // API 调用fetch
        /store      // 状态管理Pinia
      
  • mini_program
    • 模块页面、API 服务wx.request、状态管理。
    • 结构UniApp
      /pages
        /index    // 主页
        /detail   // 详情页
      /services   // API 调用wx.request
      /store      // 状态管理
      

3. 接口设计

  • 统一 RESTful API
    • 路径:/api/{resource}(如 /api/data, /api/users)。
    • 方法GET查询、POST创建、PUT更新、DELETE删除
    • 查询参数:支持 filters?name=example&category=test)。
    • 响应格式:
      {
        "status": "success" | "error",
        "data": [],
        "message": ""
      }
      
  • 示例 API
    • GET /api/data:查询数据,支持分页(?page=1&limit=10)和筛选。
    • POST /api/data创建数据body 包含字段。
    • GET /api/users获取用户列表admin-system 专用)。
  • 小程序适配
    • 使用 wx.request格式与 fetch 一致。
    • 示例:
      uni.request({
        url: '/api/data?' + new URLSearchParams(filters).toString(),
        method: 'GET',
        success: (res) => { /* 处理 res.data */ }
      });
      
  • 跨域支持backend 配置 cors (2.8.x),允许所有子项目访问。

4. 数据库 Design

  • MySQL 表结构(示例):
    CREATE TABLE data (
      id INT AUTO_INCREMENT PRIMARY KEY,
      name VARCHAR(255) NOT NULL,
      category VARCHAR(100),
      created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
      INDEX idx_name (name),
      INDEX idx_category (category)
    );
    CREATE TABLE users (
      id INT AUTO_INCREMENT PRIMARY KEY,
      username VARCHAR(50) NOT NULL UNIQUE,
      password VARCHAR(255) NOT NULL,
      role ENUM('admin', 'user') DEFAULT 'user',
      INDEX idx_username (username)
    );
    
  • 设计原则
    • 规范化设计,减少冗余。
    • 添加索引(如 idx_name)优化查询。
    • 使用外键(视需求)确保数据一致性。
  • ORM:使用 Sequelize (6.29.x),定义模型:
    const { DataTypes } = require('sequelize');
    const sequelize = require('./config/database');
    const Data = sequelize.define('Data', {
      id: { type: DataTypes.INTEGER, autoIncrement: true, primaryKey: true },
      name: { type: DataTypes.STRING, allowNull: false },
      category: { type: DataTypes.STRING }
    }, {
      indexes: [{ fields: ['name'] }, { fields: ['category'] }]
    });
    

5. 筛选逻辑设计

  • 前端admin-system/website/datav/mini_program
    • 使用 reactive filters 对象:
      import { reactive } from 'vue';
      const filters = reactive({ name: '', category: '' });
      function updateFilter(key, value) {
        filters[key] = value;
        fetchData();
      }
      async function fetchData() {
        const query = new URLSearchParams(filters).toString();
        const response = await fetch(`/api/data?${query}`);
        return await response.json();
      }
      
    • 小程序适配 wx.request逻辑一致
      async function fetchData() {
        const query = new URLSearchParams(filters).toString();
        const res = await uni.request({
          url: `/api/data?${query}`,
          method: 'GET'
        });
        return res.data;
      }
      
  • 后端
    • 解析查询参数,构造参数化 SQL
      app.get('/api/data', async (req, res) => {
        const { name, category } = req.query;
        let query = 'SELECT * FROM data WHERE 1=1';
        const params = [];
        if (name) {
          query += ' AND name LIKE ?';
          params.push(`%${name}%`);
        }
        if (category) {
          query += ' AND category = ?';
          params.push(category);
        }
        const [rows] = await pool.query(query, params);
        res.json({ status: 'success', data: rows, message: '' });
      });
      

6. 性能优化

  • 数据库
    • 添加索引(如 INDEX idx_name)。
    • 使用连接池mysql2/promise 2.3.x管理 MySQL 连接。
    • 分页查询(LIMIT, OFFSET)避免全表扫描。
  • 前端
    • 防抖筛选请求300mslodash.debounce 4.0.x
    • datav 使用分片加载(如 ECharts lazyUpdate
    • CDN 加速静态资源Vue.js/ECharts via unpkg/jsDelivr
  • 后端
    • 缓存热点数据Redis 6.x视需求兼容 Node.js 16.20.2)。
    • 限制 API 请求频率express-rate-limit 5.x
  • 小程序
    • 优化首屏加载(按需加载数据)。
    • 缓存本地数据uni.storage

7. 安全性设计

  • 后端
    • 参数化查询防止 SQL 注入mysql2/Sequelize
    • JWT 认证jsonwebtoken 8.x保护 API/api/users)。
    • 环境变量dotenv 16.0.x存储敏感信息
      DB_HOST=localhost
      DB_USER=root
      DB_PASSWORD=your_password
      DB_DATABASE=project_db
      JWT_SECRET=your_secret
      
  • 前端
    • 验证用户输入,防止 XSSsanitize-html 2.x
    • HTTPS 加密通信。
  • 小程序
    • 遵守微信安全规范(如数据加密)。
    • 限制 API 调用范围(仅调用必要 API

8. 可扩展性设计

  • 模块化
    • backend 使用控制器和服务分离,便于添加新 API。
    • 前端组件化