搭建 Flask 3.1 + Vue.js 全栈项目,采用单端口架构、结构化日志和独特的前端设计。
| 层级 | 技术选型 |
|---|---|
| ------ | --------- |
| Web 框架 | Flask 3.1.0 |
| 前端 | Vue.js (CDN, 单端口) |
| 依赖管理 | uv |
| 日志 | Python logging (TimedRotatingFileHandler) |
| 端口 | 80 (统一) |
所有请求由 Flask 在 80 端口统一处理。静态文件(HTML/CSS/JS)通过 Flask 路由从 templates/ 目录提供。
按顺序执行以下步骤:
scripts/init_project.pypyproject.toml向用户询问:
运行初始化脚本:
python scripts/init_project.py <project-name> --path <target-directory>
这将创建:
<project-name>/
├── AGENTS.md # AI Agent 项目指南(自动生成)
├── pyproject.toml # uv 项目配置
├── uv.lock # uv 锁定文件(自动生成)
├── src/
│ ├── <project-name>.py # Flask 主入口(含日志)
│ ├── templates/ # 前端资源
│ │ ├── <project-name>.html # 主页面 (Vue.js)
│ │ ├── css/ # 样式文件
│ │ ├── js/ # JavaScript 文件
│ │ └── assets/ # 静态资源(图片、字体等)
│ ├── utils/ # 核心工具模块
│ │ ├── __init__.py
│ │ └── logger.py # 日志模块
│ └── log/ # 日志输出目录
│ └── *.log # 按模块分日志文件(按天轮转)
pyproject.toml 自动生成,包含 uv 镜像配置:
[tool.uv]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"
核心依赖:
dependencies = [
"flask>=3.1.0",
]
生成的 包含集成的日志功能:
from flask import Flask, send_from_directory, send_file
from utils.logger import get_logger
app = Flask(__name__)
logger = get_logger('<project-name>')
@app.route('/')
def index():
return send_file('templates/<project-name>.html')
# ... 静态文件路由 ...
if __name__ == '__main__':
logger.info('启动服务器,端口 80...')
app.run(host='0.0.0.0', port=80, debug=True)
创建 HTML/CSS/JS 时应用前端设计指南。完整设计系统参见 references/frontend-design.md。
核心原则:
模式Vue.js 集成模式:
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<div id="app">
<!-- Vue 模板 -->
</div>
<script>
const { createApp, ref, computed, onMounted } = Vue
const app = createApp({
setup() {
// Composition API
return {}
}
})
app.mount('#app')
</script>
详细的 Vue.js 最佳实践参见 references/vue-guidelines.md。
重要:任何项目修改后,更新 AGENTS.md 以反映变更。
AGENTS.md 文件在项目创建时自动生成,作为 AI Agent 项目指南。必须与实际项目状态保持同步。
何时更新 AGENTS.md:
更新内容:
更新日志格式:
## 更新日志
| 日期 | 版本 | 变更内容 |
|------|------|---------|
| 2026-06-07 | 0.1.0 | 初始项目创建 |
| 2026-06-08 | 0.2.0 | 新增用户认证模块 |
cd <project-path>
uv sync
uv run python src/<project-name>.py
src/utils/logger.pysrc/log/%(asctime)s | %(levelname)-8s | %(name)s | %(message)sfrom utils.logger import get_logger
logger = get_logger('module_name')
logger.info('操作成功完成')
logger.warning('发生了意外情况')
logger.error('发生错误: %s', error_detail)
每个日志记录器名称创建单独的日志文件:src/log/
文件在午夜轮转,命名模式:
交付前验证:
pyproject.toml 包含 [tool.uv] 清华镜像配置pyproject.toml 位于项目根目录(与 src 同级)src/log/ 目录存在且包含 .gitkeepAGENTS.md 存在且反映当前项目状态cursor-pointer共 2 个版本