Flatpages 使用文檔
Flatpages 是一個簡單而強大的靜態頁面管理系統,支持Markdown 格式的內容編寫,自動生成目錄,並提供美觀的閱讀界面。
功能特點
- 支持Markdown 格式編寫內容
- 自動生成文章目錄
- 代碼高亮顯示
- 閱讀進度指示
- 響應式設計,支持移動端
- 支持文章導航(上一篇/下一篇)
- 支持文章搜索
- 國際化支持
使用方法
1. 配置啟用
在配置文件中啟用flatpages 功能:
[flatpages]
# 是否启用flatpages
enable = true
# 支持配置多个flatpage目录
[[flatpages.dirs]]
nav_name = "帮助文档"
nav_path = "docs"
file_path = "statics/flatpages/docs"
# 每页显示的条目数,可选,默认为10
page_size = 20
# 可以继续添加更多目录配置...
2. 創建文章
在statics/flatpages
目錄下創建.md
文件,按照以下格式編寫:
# 文章标题
> 文章描述(会显示在列表页)
正文内容...
## 二级标题
### 三级标题
正文内容...
3. Markdown 格式說明
Flatpages 支持標準Markdown 語法,包括:
- 標題(H1-H4)
- 列表(有序和無序)
- 代碼塊(支持語法高亮)
- 引用塊
- 鏈接
- 圖片
- 行內代碼
代碼塊示例:
def hello():
print("Hello, World!")
4. 特殊功能
代碼複製
所有代碼塊右上角都會自動添加複制按鈕,方便用戶複製代碼。
目錄導航
系統會自動根據文章的標題(H2-H4)生成目錄,並在右側顯示。目錄支持:
- 自動高亮當前閱讀位置
- 點擊跳轉
- 滾動同步
閱讀進度
頁面頂部會顯示閱讀進度條,直觀展示閱讀位置。
實現原理
1. 文件系統
Flatpages 使用Go 的embed.FS
來管理靜態文件:
//go:embed flatpages/*
var Files embed.FS
2. 路由註冊
系統在啟動時通過InitFlatpages
函數註冊相關路由:
-
/fp/
- 文章列表頁 /fp/:slug
- 文章詳情頁
3. Markdown 解析
使用gomarkdown/markdown
包進行Markdown 解析,支持:
- CommonExtensions
- AutoHeadingIDs
- HrefTargetBlank
4. 文章管理
系統會在啟動時加載所有Markdown 文件:
- 解析文件名作為URL slug
- 提取文章標題(H1)
- 提取文章描述(第一個引用塊)
- 計算閱讀時間
- 記錄更新時間
5. 搜索實現
列表頁的搜索功能使用JavaScript 實現,支持對標題和描述的實時搜索。
6. 國際化支持
系統集成了i18n 支持,可以通過配置啟用多語言支持:
[i18n]
enable = true
最佳實踐
- 文件命名
- 使用有意義的文件名,它將作為URL 的一部分
- 避免使用特殊字符和空格
- 推薦使用小寫字母和連字符
- 內容組織
- 每個文件必須有一個H1 標題
- 使用引用塊來添加文章描述
- 合理使用二級和三級標題來組織內容
- 控制單個文件的大小,建議不超過1000 行
- 圖片處理
- 圖片建議存放在
statics/img
目錄下 - 使用相對路徑引用圖片
- 壓縮圖片以提高加載速度
- 圖片建議存放在
- 代碼展示
- 指定代碼塊的語言以獲得正確的語法高亮
- 為重要的代碼添加註釋
- 確保代碼塊的縮進正確
故障排除
- 頁面未顯示
- 檢查配置文件中
flatpages.enable
是否為true - 確認Markdown 文件位於正確的目錄
- 檢查配置文件中
- 目錄未生成
- 檢查文章是否包含二級或三級標題
- 確認標題格式正確(## 或###)
- 樣式異常
- 檢查Markdown 語法是否正確
- 確認文件編碼為UTF-8
- 搜索無效
- 檢查瀏覽器控制台是否有JavaScript 錯誤
- 確認頁面JavaScript 正確加載