<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>工程实践 on E7Coding</title><link>https://www.e7coding.com/categories/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/</link><description>Recent content in 工程实践 on E7Coding</description><generator>Hugo</generator><language>zh-cn</language><managingEditor>Joy</managingEditor><webMaster>Joy</webMaster><lastBuildDate>Fri, 12 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.e7coding.com/categories/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/index.xml" rel="self" type="application/rss+xml"/><item><title>排版样例：Markdown 各元素一览</title><link>https://www.e7coding.com/posts/markdown-styleguide/</link><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><author>Joy</author><guid>https://www.e7coding.com/posts/markdown-styleguide/</guid><description>&lt;p&gt;这一段是普通正文，用来检查 &lt;strong&gt;加粗&lt;/strong&gt;、&lt;code&gt;行内代码&lt;/code&gt; 以及&lt;a href="https://gohugo.io" target="_blank" rel="noopener noreferrer"&gt;链接&lt;/a&gt;的样式是否与 Minimal 一致。正文字号 16px、行高 1.5。&lt;/p&gt;
&lt;h2 id="二级标题barlow-800"&gt;二级标题（Barlow 800）&lt;/h2&gt;
&lt;p&gt;段落之间保持 1.25rem 的下边距，整体竖向节奏与原 Minimal 的 &lt;code&gt;styles.tsx&lt;/code&gt; 对齐。&lt;/p&gt;
&lt;h3 id="三级标题"&gt;三级标题&lt;/h3&gt;
&lt;p&gt;下面是无序与有序列表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一项，列表行高为 2&lt;/li&gt;
&lt;li&gt;第二项，缩进 16px&lt;/li&gt;
&lt;li&gt;第三项&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;有序列表第一步&lt;/li&gt;
&lt;li&gt;有序列表第二步&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="任务列表"&gt;任务列表&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input checked="" disabled="" type="checkbox"&gt; 已完成的任务&lt;/li&gt;
&lt;li&gt;&lt;input disabled="" type="checkbox"&gt; 待办的任务&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="引用"&gt;引用&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;设计的一致性，不是靠自律，而是靠把正确的选择变成默认值。&lt;/p&gt;</description></item><item><title>静态博客的零成本托管方案对比</title><link>https://www.e7coding.com/posts/static-site-hosting/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><author>Joy</author><guid>https://www.e7coding.com/posts/static-site-hosting/</guid><description>&lt;h2 id="为什么静态站托管几乎免费"&gt;为什么静态站托管几乎免费&lt;/h2&gt;
&lt;p&gt;没有服务器、没有数据库，CDN 直接分发 HTML —— 这让静态博客可以挂在各家
免费额度上长期运行。&lt;/p&gt;
&lt;h2 id="四家对比"&gt;四家对比&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Pages&lt;/strong&gt;：构建额度宽松，全球 CDN 最快，推荐&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vercel&lt;/strong&gt;：体验顺滑，但商业用途需留意条款&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Netlify&lt;/strong&gt;：老牌，表单/函数生态完整&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;GitHub Pages&lt;/strong&gt;：最简单，但构建能力有限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对个人博客，&lt;strong&gt;Cloudflare Pages + Hugo&lt;/strong&gt; 是当前性价比最高的组合。&lt;/p&gt;</description></item><item><title>重构老项目前，我会先做这三件事</title><link>https://www.e7coding.com/posts/before-refactoring-legacy/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><author>Joy</author><guid>https://www.e7coding.com/posts/before-refactoring-legacy/</guid><description>&lt;p&gt;接手一个没人敢动的老项目，最容易犯的错就是上来就大改。我的经验是先做三件事：&lt;/p&gt;
&lt;h2 id="1-给关键路径补上测试"&gt;1. 给关键路径补上测试&lt;/h2&gt;
&lt;p&gt;哪怕只是冒烟测试，也能在你改坏东西时第一时间报警。没有测试的重构，等于闭着眼睛拆炸弹。&lt;/p&gt;
&lt;h2 id="2-划清模块边界"&gt;2. 划清模块边界&lt;/h2&gt;
&lt;p&gt;先理清「谁依赖谁」，把要动的部分和外界的接口固定下来。边界稳了，内部怎么折腾都可控。&lt;/p&gt;
&lt;h2 id="3-留好可回滚的退路"&gt;3. 留好可回滚的退路&lt;/h2&gt;
&lt;p&gt;小步提交、特性开关、灰度发布——确保任何一步都能快速退回。重构是马拉松，不是一锤子买卖。&lt;/p&gt;
&lt;p&gt;做完这三件，再开始动手，心里就有底了。&lt;/p&gt;</description></item><item><title>用 Hugo 复刻 Minimal UI 的博客观感</title><link>https://www.e7coding.com/posts/hello-hugo/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><author>Joy</author><guid>https://www.e7coding.com/posts/hello-hugo/</guid><description>&lt;h2 id="为什么是-hugo"&gt;为什么是 Hugo&lt;/h2&gt;
&lt;p&gt;Minimal UI 是一套基于 React + MUI 的后台模板，观感精炼。但个人博客并不需要一个运行时
SPA —— 静态站点在&lt;strong&gt;速度、可维护性、托管成本&lt;/strong&gt;上都更划算。&lt;/p&gt;
&lt;p&gt;Hugo 的优势在于：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;构建极快，上千篇文章秒级出站&lt;/li&gt;
&lt;li&gt;内置 taxonomy，&lt;strong&gt;分类（categories）与标签（tags）开箱即用&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Markdown 即内容，写作体验顺滑&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="设计如何迁移"&gt;设计如何迁移&lt;/h2&gt;
&lt;p&gt;MUI 的 &lt;code&gt;sx&lt;/code&gt; 与主题系统无法直接搬运，但&lt;strong&gt;设计 token 可以&lt;/strong&gt;：主色 &lt;code&gt;#00A76F&lt;/code&gt;、
柔和卡片阴影、16px 圆角、Public Sans + Barlow 字体，全部转写成 Tailwind v4 的
&lt;code&gt;@theme&lt;/code&gt; 变量即可。&lt;/p&gt;</description></item><item><title>把 MUI 主题转写成 Tailwind v4 的设计 token</title><link>https://www.e7coding.com/posts/tailwind-tokens/</link><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><author>Joy</author><guid>https://www.e7coding.com/posts/tailwind-tokens/</guid><description>&lt;h2 id="theme-是关键"&gt;@theme 是关键&lt;/h2&gt;
&lt;p&gt;Tailwind v4 用 &lt;code&gt;@theme&lt;/code&gt; 块声明设计 token，声明即生成工具类。把 Minimal 的
&lt;code&gt;theme-config.ts&lt;/code&gt; 里的值原样搬过来：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="k"&gt;theme&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;--color-primary&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="p"&gt;#&lt;/span&gt;&lt;span class="nn"&gt;00a76f&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;--radius-card&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;16px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;--shadow-card&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;2px&lt;/span&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;rgb&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;145&lt;/span&gt; &lt;span class="nt"&gt;158&lt;/span&gt; &lt;span class="nt"&gt;171&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;2&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nt"&gt;0&lt;/span&gt; &lt;span class="nt"&gt;12px&lt;/span&gt; &lt;span class="nt"&gt;24px&lt;/span&gt; &lt;span class="nt"&gt;-4px&lt;/span&gt; &lt;span class="nt"&gt;rgb&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;145&lt;/span&gt; &lt;span class="nt"&gt;158&lt;/span&gt; &lt;span class="nt"&gt;171&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;12&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;之后就能直接写 &lt;code&gt;bg-primary&lt;/code&gt;、&lt;code&gt;rounded-card&lt;/code&gt;、&lt;code&gt;shadow-card&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="soft-chip-的复刻"&gt;soft chip 的复刻&lt;/h2&gt;
&lt;p&gt;MUI 的 &lt;code&gt;&amp;lt;Chip variant=&amp;quot;soft&amp;quot;&amp;gt;&lt;/code&gt; 是 16% 透明度底色 + 主色文字，用 &lt;code&gt;color-mix&lt;/code&gt;
一行还原，无需额外配置。&lt;/p&gt;</description></item><item><title>用「设计 token」的思维管理个人站点风格</title><link>https://www.e7coding.com/posts/design-tokens-thinking/</link><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><author>Joy</author><guid>https://www.e7coding.com/posts/design-tokens-thinking/</guid><description>&lt;h2 id="token-是单一事实来源"&gt;token 是单一事实来源&lt;/h2&gt;
&lt;p&gt;把所有视觉决策（主色、灰阶、圆角、阴影）收敛成命名变量，模板里只引用变量
名而非硬编码值。换肤、调性微调都只动一处。&lt;/p&gt;
&lt;h2 id="在-tailwind-v4-里落地"&gt;在 Tailwind v4 里落地&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;@theme&lt;/code&gt; 块声明即生成工具类，这让&amp;quot;设计 token = 实现&amp;quot;几乎零距离。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;风格一致性不是靠自律，而是靠把正确的选择变成默认值。&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>