文件结构方案
/my-blog
│
├── builder/ # 构建脚本目录
│ ├── __init__.py
│ ├── main.py # 主构建脚本
│ ├── config.py # 全局配置文件 (替代 globalVar.py)
│ ├── page_parser.py # 页面解析与处理 (替代 page.py)
│ ├── index_updater.py # 索引页更新 (替代 updateIndex.py)
│ └── rss_generator.py # RSS 生成 (替代 RSSgenerator.py)
│
├── content/ # 内容源文件目录
│ ├── articles/ # 分类:文章
│ │ ├── my-first-article.html
│ │ └── index.html # 该分类的索引页模板
│ ├── weekly/ # 分类:周报
│ │ ├── week-1.html
│ │ └── index.html
│ └── notes/ # 分类:笔记
│ ├── some-notes.html
│ └── index.html
│
├── static/ # 静态资源目录
│ ├── css/
│ │ ├── main.css # 全局和主页样式
│ │ └── article.css # 文章页样式
│ ├── js/
│ │ └── main.js
│ └── images/
│ └── sigil.svg
│
├── templates/ # 页面模板目录
│ └── article.template # 文章页的HTML模板
│
├── output/ # 【重要】输出目录
│ │
│ ├── articles/
│ │ ├── my-first-article.html
│ │ └── index.html
│ ├── weekly/
│ │ ├── week-1.html
│ │ └── index.html
│ ├── notes/
│ │ ├── some-notes.html
│ │ └── index.html
│ ├── css/
│ ├── js/
│ ├── images/
│ ├── index.html
│ └── feed.xml
│
├── index.html # 主页源文件
├── CNAME # (可选) 自定义域名文件
└── run_build.py # (可选) 用于执行构建的脚本
结构解析
builder/(构建脚本): 这是站点的引擎。所有自动化处理逻辑都应封装于此。main.py作为入口,协调page_parser.py(读取并处理content/中的文章)、index_updater.py(更新各级索引页)和rss_generator.py的工作。config.py用于存放分类名称、路径等全局变量,便于统一管理。content/(内容源文件): 所有博客文章的原始.html文件,按自定义分类存放在不同的子目录中。每个子目录的index.html是该分类列表页面的源文件,构建脚本会读取它并填入文章列表。这是与构建系统分离的内容库。static/(静态资源): 存放无需处理、只需直接复制到最终站点的文件,如 CSS、JavaScript 和图片。templates/(页面模板): 存放 HTML 骨架文件。构建脚本会读取content/目录下的源文件,将其内容填充到这里的模板中,最终生成完整的文章页面。output/(输出目录): 这是一个至关重要的补充。构建完成后,所有生成的静态站点文件(包括所有文章页面、索引页、CSS/JS/图片、index.html和feed.xml)都应存放在此目录。关键在于将源码与生成结果分离,这能有效避免在构建过程中污染原始文件,极大降低了操作风险。你最终需要部署到服务器上的,就是这个output/目录的全部内容。- 根目录文件:
index.html: 你主页的源文件,构建脚本会读取它并注入最新的文章列表。CNAME: 如果你使用 GitHub Pages 并需要绑定自定义域名,则需要此文件。
工作流程推演
- 在
content/weekly/目录下创建一个新的week-2.html文件并撰写内容。 - 执行根目录的
run_build.py(或直接运行builder/main.py)。 - 脚本启动:
- 读取所有
content/目录下的文章,解析元数据。 - 使用
templates/article.template为week-2.html生成一个完整的、格式化的 HTML 文件,并将其保存到output/weekly/目录。 - 更新
content/weekly/index.html和根目录的index.html,将新文章的链接和摘要添加进去,并将更新后的版本保存到output/目录对应位置。 - 重新生成
feed.xml并保存到output/。 - 将
static/目录下的所有资源复制到output/。 - 将
output/目录下的所有内容部署到你的服务器。