2026 年 4 月,Cloudflare 发布了 EmDash,一款被官方称为「WordPress 精神继任者」的开源 CMS。 凭借 TypeScript + Astro + 无服务器架构的组合,以及 Cloudflare 的背书,EmDash 在开发者社区引起了大量讨论。Halo 在 2018 年就以 Java + Spring Boot 的方式开始了「现代 CMS」的探索。这两个项目都是对 WordPress 模式的回应,但走的是两条截然不同的技术路线。
本文试图客观对比这两款新一代开源 CMS。
两个产品,一个目标
EmDash
2026 年 4 月以 v0.1.0 开发者预览版启动,TypeScript 编写,MIT 协议,Cloudflare 推出的开源项目。技术架构以 Astro 为框架、Cloudflare Workers / Node.js 为运行时。核心设计理念:无服务器(scale-to-zero)、插件沙箱隔离、AI 原生。当前仍处 beta preview 阶段,版本迭代很快,尚不能按成熟 CMS 评估。
Halo
2018 年开源,Java(Spring Boot)编写,GPL-3.0 协议。覆盖博客、知识库、企业官网、在线商城四种场景。累计发布 200+ 版本,当前稳定版为 2.25.x 系列。成熟的生产级系统。
选 Halo,如果你:
- 需要一个稳定、成熟的系统,可以立即用于生产环境
- 偏好 Java + Spring Boot 技术栈
- 需要内置全文搜索、备份恢复、主题系统等开箱即用的完整功能
- 面向中国市场,需要微信支付、支付宝等本土化能力
- 需要通过应用市场发现和安装主题与插件
- 想要 Docker 一键部署的简单运维体验
选 EmDash(未来),如果你:
- 偏好 TypeScript / Node.js 生态,想要用 Astro 构建前端
- 看重插件安全隔离——在 Cloudflare 环境中,插件可以运行在独立 Worker 沙箱中
- 已经在 Cloudflare 生态中(Workers、D1、R2),希望无缝集成
- 需要 AI Agent 可编程管理的能力(MCP 服务器、Agent Skills)
- 愿意接受一个早期项目,参与社区建设
- 对 x402 等新型内容付费实验感兴趣
功能逐项对比
| 维度 | Halo | EmDash |
|---|---|---|
| 成熟度 | 生产级(v2.25.x,200+ 版本) | beta preview(从 v0.1.0 起快速迭代) |
| 许可证 | GPL-3.0 | MIT |
| 后端技术栈 | Java / Spring Boot | TypeScript / Astro |
| 运行时 | JVM(传统服务器) | Cloudflare Workers / Node.js(无服务器) |
| 前端渲染 | Thymeleaf 模板引擎(服务端渲染) | Astro(SSG + SSR 混合) |
| 数据库 | PostgreSQL、MySQL、MariaDB、H2 | Cloudflare D1 / SQLite,也可适配 Turso、PostgreSQL 等 |
| 部署方式 | Docker / Docker Compose | Cloudflare Workers / Docker / Node.js |
| 内容模型 | 固定(文章/页面/分类/标签) | 自定义(管理面板中定义 Schema) |
| 编辑器 | 富文本编辑器 | 富文本编辑器 |
| 多用户 | ✅ RBAC 权限体系 | ✅ 角色制(管理员/编辑/作者/贡献者) |
| 认证方式 | 用户名/密码 + 两步验证 | Passkey 默认,支持 SSO 插件 |
| 全文搜索 | 内置 Lucene 搜索引擎,可配合搜索组件扩展主题端体验 | 内置 FTS5 搜索能力(生态仍早期) |
| 备份恢复 | 内置备份恢复 | ❌ 取决于部署环境 |
| 插件机制 | JVM 类加载器 + 动态加载/卸载 | Cloudflare 环境下沙箱化 Dynamic Workers;Node.js 环境为进程内安全模式 |
| 插件安全 | 独立类加载器隔离 | Cloudflare Workers 隔离(Node.js 自托管时不具备同等隔离) |
| 主题系统 | 应用市场 + Thymeleaf 模板 | 标准 Astro 项目(页面/布局/组件/样式) |
| 主题市场 | 官方应用市场 | 去中心化(能力声明 = 信任),生态尚未建立 |
| AI 能力 | 官方 AI Foundation 插件 | 原生 Agent Skills + CLI + MCP 服务器 |
| 内容付费 | 商城版(商品/订单/支付) | x402 等实验性内容付费方向 |
| SEO | 结构化配置 + 模板渲染 | Astro 原生优势(静态预渲染 + SSR) |
| 多语言 | 管理端原生多语言 | Lingui 国际化框架 |
| WordPress 迁移 | 通过站点迁移插件支持 | ✅ 原生 WXR 导入 + Exporter 插件 |
| 托管方式 | 自托管 | 部署到 Cloudflare Workers / 自托管 Node.js |
| 运维负担 | 中等(Docker/数据库管理) | 低(部署到 Cloudflare Workers 时)/ 中等(自托管) |
| 适用场景 | 博客、知识库、企业官网、商城 | 内容驱动网站、Blog、文档站 |
架构对比:服务器 vs 边缘
这是最根本的分歧
Halo 采用传统的服务端架构:一个 Java 应用运行在 VPS 上,接收 HTTP 请求,查询数据库,通过模板引擎渲染 HTML 返回给访客。这是 WordPress 熟悉的模式,也是大多数 CMS 的模式。优势在于:成熟、可控、所有的数据和逻辑都在自己的服务器上。
EmDash 采用无服务器边缘架构:应用运行在 Cloudflare 全球网络的 v8 隔离环境(Workers)中,访客请求由最近的边缘节点处理。关键特征:
- Scale-to-zero:没有请求时,不消耗计算资源(零闲置成本)
- 全球就近响应:内容通过 Cloudflare 边缘网络分发,延迟极低
- 插件沙箱隔离:在 Cloudflare 部署下,每个插件在独立的 Dynamic Worker 中运行,无法直接访问数据库、文件系统或网络
Halo 的架构对于习惯了传统服务端的团队来说更直观;EmDash 的架构更适合已经生活在 Cloudflare 生态或追求边缘性能的团队。但 EmDash 的无服务器模式也意味着:如果离开了 Cloudflare Workers 运行时,插件隔离等核心安全特性会明显弱化——这是潜在的平台依赖。
插件安全:两种哲学
WordPress 的痛点,两者都想解决
WordPress 生态的新增漏洞长期高度集中在第三方插件和主题上;Cloudflare 发布 EmDash 时引用的 Patchstack 数据为插件占 96%。根因在于插件与核心共享运行环境,一个存在漏洞的插件可以访问整个站点。Halo 和 EmDash 都试图解决这个问题,但方式不同。
Halo 采用独立类加载器:每个插件在自己的 ClassLoader 中运行,隔离了插件间的类冲突,但插件仍然运行在同一个 JVM 中,共享底层资源。
EmDash 更为激进:在 Cloudflare 环境中,每个插件运行在独立的 Dynamic Worker 沙箱中,通过能力声明机制(Capability Manifest)限制权限。插件必须在安装前声明需要什么权限(如 read:content、email:send),管理员在安装前就能看到完整的能力清单。更重要的是,插件可以运行而不暴露源代码——这是去中心化信任模型的关键。
小结:EmDash 的插件安全模型隔离粒度更细,但它依赖 Cloudflare Workers 的 workerd 运行时,在自托管 Node.js 环境中这个隔离机制会打折扣。Halo 的方案隔离重点不同,优势是不绑定于特定运行时。
生态系统:成熟 vs 从零开始
这是两者差距最大的维度。
Halo 拥有完整的生态基础设施:官方应用市场(主题 + 插件的一键安装)、200+ 版本发布记录、活跃的中文社区、持续增长的主题和插件、完善的文档和教程。
EmDash 的生态仍处早期——项目太新(发布不到 4 个月)。它已经有官方模板、首批插件和文档,但第三方插件市场、主题资源、教程和社区规模都还没有成熟。对于一个 CMS 来说,生态通常比核心功能更重要。Halo 已经有一个可以工作的生态,EmDash 才刚刚开始。
不过 EmDash 在生态策略上有独特的思路:通过去中心化信任模型(插件通过能力声明建立信任,无需集中审核),理论上可以降低生态建设的门槛。但这仍然是理论——在实际落地之前,Halo 的生态优势是压倒性的。
内容管理与主题
固定模型 vs 自定义模型
Halo 的核心内容模型是固定的:文章、页面、分类、标签。这对于博客和企业官网是够用的,但对于需要管理非标准化数据的场景(如产品目录、员工档案),不如专门的自定义内容模型直观。不过这并不意味着 Halo 完全不能承载额外数据:主题可以通过主题配置提供简单的数据配置管理,插件也可以扩展额外的业务模型。
EmDash 像 Strapi 一样,允许在管理面板中直接定义内容类型和字段(Schema Builder),每个 Collection 在数据库中独立存储。同时,EmDash 的主题是标准 Astro 项目——对现代前端开发者来说非常熟悉,可以使用 Astro 的全部能力(静态生成、SSR、组件化、TailwindCSS 等)。
Halo 的 Thymeleaf 主题系统更为传统,但对非前端开发者友好——可以通过配置表单调整主题设置,无需写代码。
客观而言:各自的三项不足
Halo 的三项短板
-
采用成熟的服务端架构。 Halo 的 Java + Docker + 数据库架构成熟、可控,数据完全自控,但默认不具备 scale-to-zero、边缘运行、全球 CDN 原生分发这些无服务器特性。如果项目已经深度依赖 Cloudflare 边缘生态,EmDash 的架构路径更贴近这种需求。
-
插件隔离策略不同。 Halo 采用类加载器隔离,可以降低插件间类冲突和部分耦合问题,优势是不绑定特定运行时,在任何部署环境均有效。EmDash 在 Cloudflare 环境下提供 Dynamic Workers 级别的运行时沙箱隔离,两种方案各有取舍——Halo 侧重通用性和跨环境一致性,EmDash 侧重运行时级别的强隔离(但依赖 Cloudflare 运行时)。
-
Thymeleaf 主题体系对非前端开发者友好。 相比 Astro-first 的架构,Halo 的主题系统更注重开箱即用——非前端开发者通过配置表单就能调整主题,无需写前端代码。对于需要现代前端能力的项目,Halo 社区也在积极探索集成方案,例如 theme-vite-starter 和 theme-astro-starter。
EmDash 的三项短板
-
仍是早期项目。 beta preview 意味着功能、API 和插件生态都还在快速变化,生产环境的未知数太多——不建议把它当作成熟 CMS 的等价替换。Halo 已有更成熟的生产使用基础。
-
Cloudflare 生态依赖。 虽然 EmDash 可以部署到 Node.js 服务器,但其核心卖点(插件沙箱、scale-to-zero、边缘分发)都依赖 Cloudflare Workers 运行时。离开 Cloudflare,这些架构优势会明显弱化。
-
生态系统仍在起步。 EmDash 已有官方模板和首批插件,但第三方插件、主题、教程和社区规模远不能与成熟 CMS 相比。在 CMS 领域,这些通常比核心功能更重要。Halo 的应用市场虽然规模不如 WordPress,但已经可以满足大多数场景;EmDash 还需要时间追赶。
谁通常更适合哪一款?
Halo 更适合:
- 今天就需要上线的项目
- Java / Spring Boot 技术栈
- 面向中国市场的网站(微信支付、小程序等本土化能力)
- 需要成熟的插件和主题生态
- 博客、知识库、企业官网、商城四类标准场景
- Docker 部署 + 自托管运维
- 非前端开发者主导的项目
EmDash 更适合(未来):
- 新启动的项目,愿意等待生态成熟
- TypeScript / Astro 技术栈的前端团队
- 已经在 Cloudflare 生态中(Pages、Workers、D1、R2)
- 看重 Cloudflare 环境下插件安全沙箱的团队(多插件共存场景)
- 需要 AI Agent 可编程管理的能力
- 需要真正自定义内容模型(不只是文章和页面)
- 愿意跟进 x402 等新型内容付费实验
常见问题
EmDash 真的能取代 WordPress 吗?
短期内不能,长期来看有可能在特定场景下成为替代选择。WordPress 的优势是 20 年积累的生态——6.7 万+ 插件、不可计数的主题、教程和社区。EmDash 在技术上确实解决了一些 WordPress 的架构性缺陷(插件安全、现代前端、无服务器部署),但 CMS 的竞争力最终不取决于核心代码,而取决于生态。Halo 用 7 年时间建立了一个可用的生态;EmDash 才刚刚开始。
Halo 和 EmDash 都用 TypeScript 吗?
不是。Halo 使用 Java(后端),管理端使用 Vue。EmDash 全栈 TypeScript(后端 + 前端都在 TypeScript 生态中)。如果你希望在项目中统一使用 TypeScript,EmDash 在这个维度上有天然优势。
EmDash 的插件系统真的不需要审核吗?
EmDash 的模式是「能力声明替代审核」:插件在安装前必须声明需要的全部权限,管理员在安装前就知道这个插件能做什么。这种模式在理论上可以降低对集中审核的依赖,但实际效果取决于管理员是否认真查看权限声明,以及社区是否会形成自发的口碑信任体系。
EmDash 会锁定在 Cloudflare 平台吗?
部分会。EmDash 的核心代码可以运行在 Node.js 服务器或 Docker 上。但插件沙箱隔离(Dynamic Workers)、scale-to-zero(Workers 计费模式)、原生 CDN 分发这些卖点都依赖 Cloudflare 运行时。在自托管 Node.js 环境,这些优势会明显弱化,插件也会以进程内安全模式运行。
Halo 会考虑类似 EmDash 的无服务器架构吗?
Halo 基于 JVM 架构,更适合通过 Docker Compose、自托管服务器、缓存和 CDN 获得稳定的动态站点体验。如果你的核心需求是 Cloudflare Workers 这类原生边缘运行时,EmDash 或其他 Headless + 无服务器方案更贴近这个方向。
总结
Halo 和 EmDash 都在回应同一个问题:WordPress 已经 24 年了,下一个时代的 CMS 应该是什么样子?
Halo 的答案是:用更现代的技术栈(Java/Spring Boot)重做一遍,同时保持与传统 CMS 相似的使用体验——后端管理、模板渲染、插件扩展、主题系统。这是一个「渐进式进化」的方案:不颠覆用户的认知模型,但在每个环节做到更好。
EmDash 的答案是:彻底重构基础——无服务器运行时替代传统的服务端进程、Worker 沙箱替代共享运行环境、Astro 混合渲染替代服务端 ONLY 渲染、AI Agent 可编程管理替代纯人工操作。这是一个「颠覆式重构」的方案:方向正确,但生态和时间是其最大的不确定性。
本文基于截至 2026 年 7 月的公开信息编写。EmDash 仍处 beta preview,功能和生态可能快速变化。