<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Engineering on PlumePHP</title><link>https://plumephp.com/categories/engineering/</link><description>Recent content in Engineering on PlumePHP</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 29 Dec 2025 12:30:00 +0800</lastBuildDate><atom:link href="https://plumephp.com/categories/engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Plumego Best Practices · 一个真实业务（用户中心）的完整示例</title><link>https://plumephp.com/plumego-user-center-example/</link><pubDate>Mon, 29 Dec 2025 12:30:00 +0800</pubDate><guid>https://plumephp.com/plumego-user-center-example/</guid><description>&lt;h2 id="0-这份示例解决什么问题"&gt;0. 这份示例解决什么问题&lt;/h2&gt;
&lt;p&gt;你已经有了 Plumego，但真正把它用进“用户中心”这种业务时，通常会卡在三件事：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;模块边界&lt;/strong&gt;：User / Auth / Project 怎么拆，拆完怎么组装，才不会越写越乱。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;请求与错误模型&lt;/strong&gt;：统一 JSON 输出、统一错误码、统一 trace/request id，把“可观察性”内建进骨架。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;鉴权&lt;/strong&gt;：最小可用、可扩展、可替换（未来可接 JWT / OAuth / SSO），但现在就能跑通。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Plumego 的定位是“标准库内的 Go HTTP 工具箱”，用 &lt;code&gt;core.App&lt;/code&gt; 组合能力，而不是把你锁死在某种框架范式里。&lt;br&gt;
你会看到本文的写法更接近 Birdor 的工程风格：&lt;strong&gt;少魔法、强边界、可演进&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>一个真实业务（用户中心）的完整 Plumego 示例</title><link>https://plumephp.com/plumego-user-center-complete-example/</link><pubDate>Mon, 29 Dec 2025 12:00:00 +0800</pubDate><guid>https://plumephp.com/plumego-user-center-complete-example/</guid><description>&lt;h2 id="目标与边界"&gt;目标与边界&lt;/h2&gt;
&lt;p&gt;你将得到一个&lt;strong&gt;可运行&lt;/strong&gt;的用户中心（User Center）最小实现，覆盖：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;注册：&lt;code&gt;POST /api/auth/register&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;登录：&lt;code&gt;POST /api/auth/login&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;刷新：&lt;code&gt;POST /api/auth/refresh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;当前用户：&lt;code&gt;GET /api/me&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;更新资料：&lt;code&gt;PUT /api/me&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;管理端用户：&lt;code&gt;GET /api/admin/users&lt;/code&gt;（RBAC：&lt;code&gt;admin&lt;/code&gt; 角色）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;实现策略（Birdor 风格）：&lt;/p&gt;</description></item><item><title>Plumego Roadmap</title><link>https://plumephp.com/plumego-roadmap/</link><pubDate>Mon, 29 Dec 2025 11:30:00 +0800</pubDate><guid>https://plumephp.com/plumego-roadmap/</guid><description>&lt;h2 id="状态说明"&gt;状态说明&lt;/h2&gt;
&lt;p&gt;Plumego 的定位：&lt;strong&gt;完全基于 Go 标准库、零外部依赖、强调简单优雅与可组合&lt;/strong&gt;。&lt;br&gt;
本文为一份“可执行”的路线图提案，面向：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;核心贡献者：明确优先级、版本节奏、退出/回滚策略&lt;/li&gt;
&lt;li&gt;使用者：明确当前适用边界、未来能力方向、升级成本预期&lt;/li&gt;
&lt;li&gt;生态建设：示例工程、文档、规范与工具链的逐步完善&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="路线图原则birdor-风格"&gt;路线图原则（Birdor 风格）&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;稳定优先&lt;/strong&gt;：先把现有 API 固定，再扩展能力；避免频繁破坏性变更。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最小抽象&lt;/strong&gt;：只抽象“不可避免的变化点”（store、auth、ws、codec、logger）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;显式组合&lt;/strong&gt;：中间件、组件、模块装配应尽量显式，便于审计与调试。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;性能与观测内建&lt;/strong&gt;：默认提供 request-id/trace、结构化日志、recover。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;示例驱动&lt;/strong&gt;：每个核心能力必须配套“真实业务示例”（例如 user center）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="版本策略"&gt;版本策略&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;v0.x&lt;/code&gt;：快速迭代期，允许小范围破坏性调整（但必须提供迁移说明）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;v1.0&lt;/code&gt;：API 稳定承诺（SemVer），破坏性变更进入 &lt;code&gt;v2.0&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;发布节奏：&lt;strong&gt;每 6–10 周一个 minor&lt;/strong&gt;，每 2–4 周一个 patch（视缺陷密度）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="roadmap-总览2026"&gt;Roadmap 总览（2026）&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;下面按季度给出里程碑；后期将映射到 GitHub Milestones / Projects。&lt;/p&gt;</description></item><item><title>Plumego Docs 信息架构（IA）总览</title><link>https://plumephp.com/plumego-doc-arch/</link><pubDate>Mon, 29 Dec 2025 11:00:00 +0800</pubDate><guid>https://plumephp.com/plumego-doc-arch/</guid><description>&lt;blockquote&gt;
&lt;p&gt;定位：工程级框架文档，而不是教程集合&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre tabindex="0"&gt;&lt;code&gt;docs/
├── _index.md
├── intro/
├── getting-started/
├── concepts/
├── architecture/
├── core/
├── guides/
├── patterns/
├── advanced/
├── reference/
├── faq/
├── roadmap/
└── contributing/
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;下面逐层解释&lt;strong&gt;每一部分为什么存在、解决什么问题&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>Plumego Best Practices</title><link>https://plumephp.com/plumego-best-practices/</link><pubDate>Mon, 29 Dec 2025 10:30:00 +0800</pubDate><guid>https://plumephp.com/plumego-best-practices/</guid><description>&lt;h2 id="写在前面这不是技巧合集"&gt;写在前面：这不是“技巧合集”&lt;/h2&gt;
&lt;p&gt;这份文档&lt;strong&gt;不是&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API 参数的穷举说明&lt;/li&gt;
&lt;li&gt;所有功能的使用手册&lt;/li&gt;
&lt;li&gt;为了“写得高级”而复杂化的套路&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它是一份 &lt;strong&gt;工程级 Best Practices&lt;/strong&gt;，核心目标只有一个：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;让一个 Plumego 项目在 1～3 年后依然清晰、可控、可演进。&lt;/p&gt;</description></item><item><title>Plumego 入门：一个克制而清晰的 Go 服务框架</title><link>https://plumephp.com/getting-started-with-plumego/</link><pubDate>Mon, 29 Dec 2025 10:00:01 +0800</pubDate><guid>https://plumephp.com/getting-started-with-plumego/</guid><description>&lt;h2 id="引言为什么需要-plumego"&gt;引言：为什么需要 Plumego？&lt;/h2&gt;
&lt;p&gt;在 Birdor 的工程实践中，我们反复遇到同一个问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;当项目从“能跑”进入“要长期维护”阶段，Go Web 框架往往开始成为负担，而不是助力。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Plumego 的目标并不是“更快写完第一个接口”，而是帮助你在 &lt;strong&gt;6 个月、12 个月甚至 3 年后&lt;/strong&gt;，依然能够清晰地理解、演进和重构你的服务。&lt;/p&gt;</description></item><item><title>什么时候不该使用 Plumego</title><link>https://plumephp.com/when-not-to-use-plumego/</link><pubDate>Sun, 28 Dec 2025 07:30:00 +0800</pubDate><guid>https://plumephp.com/when-not-to-use-plumego/</guid><description>&lt;h2 id="引言一个负责任的框架必须明确不适用场景"&gt;引言：一个负责任的框架，必须明确“不适用场景”&lt;/h2&gt;
&lt;p&gt;任何一个认真对待工程质量的框架，都必须敢于回答一个问题：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在什么情况下，你不应该使用我？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果一个框架声称：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;适合所有团队&lt;/li&gt;
&lt;li&gt;适合所有阶段&lt;/li&gt;
&lt;li&gt;适合所有业务&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;那么它几乎可以确定是不可信的。&lt;/p&gt;</description></item><item><title>Plumego vs 常见 Go 框架：设计取舍说明</title><link>https://plumephp.com/plumego-vs-go-frameworks/</link><pubDate>Sun, 28 Dec 2025 00:36:00 +0800</pubDate><guid>https://plumephp.com/plumego-vs-go-frameworks/</guid><description>&lt;h2 id="引言框架对比本质是在对比价值观"&gt;引言：框架对比，本质是在对比价值观&lt;/h2&gt;
&lt;p&gt;在技术社区中，“A 框架 vs B 框架”的讨论几乎从未停止。&lt;/p&gt;
&lt;p&gt;但真正成熟的工程师往往知道：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;框架之争，很少是技术对错，更多是价值取舍。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Plumego 并不是在一个“空白市场”中诞生的。&lt;br&gt;
相反，它是在 &lt;strong&gt;Go 生态已经非常繁荣&lt;/strong&gt; 的前提下，刻意选择了一条看起来“不讨巧”的道路。&lt;/p&gt;</description></item><item><title>Plumego：一个回归 Go 本质的极简服务框架</title><link>https://plumephp.com/plumego-introduction/</link><pubDate>Sun, 28 Dec 2025 00:28:00 +0800</pubDate><guid>https://plumephp.com/plumego-introduction/</guid><description>&lt;h2 id="前言为什么还要再做一个-go-框架"&gt;前言：为什么还要再做一个 Go 框架&lt;/h2&gt;
&lt;p&gt;在 Go 生态已经高度成熟的今天，&lt;strong&gt;“再做一个 Go Web 框架”&lt;/strong&gt; 看起来既多余，又无趣。&lt;/p&gt;
&lt;p&gt;我们已经有了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;功能极其完备、社区庞大的全栈式框架&lt;/li&gt;
&lt;li&gt;极致性能导向、偏底层的 HTTP / RPC 框架&lt;/li&gt;
&lt;li&gt;面向云原生、与 Kubernetes 深度绑定的应用运行时&lt;/li&gt;
&lt;li&gt;为微服务量身定制的一整套工程体系&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Plumego 并不是要和它们竞争。&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>