GoPress 文档
GoPress 是一个用 Go 编写的内容管理框架与 CMS 引擎,面向需要自托管、主题化、插件化和 API 扩展能力的网站与内容应用。 它将内容模型、后台管理、主题模板、插件扩展、SEO、媒体处理和 REST API 组织为一套可组合的工程框架。 适合用于企业官网、内容站、产品展示站、文档站,以及需要在 Go 技术栈中保留 CMS 编辑体验的定制项目。
GoPress 是什么?
GoPress 旨在把传统 CMS 中经过验证的内容模型、主题系统、插件扩展和后台管理能力,放到 Go 的运行时与工程生态里重新组织。它提供统一的内容模型、数据驱动的后台 CRUD、主题模板引擎、Hook / Filter 扩展点、REST API、SEO 基础设施、多级缓存、媒体变体和多站点配置能力。
这个项目不是 WordPress 的逐行重写,也不是对 PHP 生态的替代宣言。GoPress 更关注一类具体场景:开发者希望保留 CMS 的编辑体验和扩展模型,同时获得 Go 在部署、并发、可观测性和长期维护上的工程优势。
项目状态
GoPress 当前处于 beta 阶段。核心内容模型、后台管理、主题引擎、插件机制、SEO、缓存、媒体管线和示例主题已经具备基础可用性,但公开发布前仍需要更多真实项目验证、基准测试、迁移文档和安全审计。
如果你计划在生产环境使用,建议先从内部站点、企业官网、文档站或内容型应用开始,并根据实际流量与编辑流程做压测和备份策略。
为什么做 GoPress?
成熟 CMS 生态已经证明了“内容模型 + 主题 + 插件 + 后台管理”这套抽象的长期价值。GoPress 借鉴其中稳定的产品形态,同时用 Go 的单二进制部署、goroutine 并发模型、静态类型和标准化工具链,降低自托管 CMS 在部署、扩展和维护上的复杂度。
下面的对比不是为了评价不同技术栈的优劣,而是说明 GoPress 的设计取舍:
| 维度 | WordPress (PHP) | GoPress (Go) |
|---|---|---|
| 运行方式 | PHP-FPM / Web Server 组合,围绕请求生命周期运行 | Go 单进程服务,适合常驻内存模型 |
| 扩展方式 | 主题与插件生态成熟,运行时动态加载灵活 | Go 接口与 Hook 注册,强调类型安全和可维护性 |
| 缓存策略 | 通常通过插件、对象缓存或反向代理组合增强 | 内置内存 / Redis / 数据库多级缓存路径 |
| 定时任务 | 常见方案包括 WP-Cron 或系统 Cron | 由服务进程内的调度器执行 |
| 部署形态 | Web Server、PHP 运行时、数据库等多组件协作 | 编译后以单一服务进程交付,外接数据库与可选 Redis |
核心设计原则
- 内容优先 — 以统一的
Content + Meta模型承载文章、联系留言,以及主题声明的自定义内容类型。 - 主题与引擎分离 — 主题负责呈现,引擎负责路由、查询、SEO、媒体和后台能力。
- 插件通过接口扩展 — 插件通过 Go 接口、Hook 和 Filter 注册能力,减少隐式运行时耦合。
- 缓存作为基础能力 — 内置内存缓存、Redis 缓存和页面缓存路径,并在缺少 Redis 时自动降级。
- SEO 内建 — URL 重写、永久链接、Canonical、Sitemap、Meta、模板映射、重定向等能力在核心层统一处理。
- API First — 内容类型可暴露 REST API,并通过 Swagger / OpenAPI 描述接口。
- 多实例隔离 — 支持表前缀和站点级配置,便于多实例共享基础设施并隔离数据边界。
文档导航
- 快速开始 — 安装、配置、第一次启动
- 架构 — 引擎结构、Hook 系统、URL/SEO、内容过滤
- 后台管理 — 后台 CMS 功能、扩展点、菜单管理
- 主题开发 — 主题接入、SEO 规范、图片管线、媒体变体
- 插件开发 — 创建插件、内置插件参考(multilang / seo-extras / code-snippets)
- 参考资料 — 项目结构、表前缀、REST API、技术栈、路线图
API 接口规范见独立的 Swagger 文档(运行中的实例)或 docs/swagger.yaml。
