<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>e2147</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://2025studentdev.github.io/hexobloge2147/</id>
  <link href="https://2025studentdev.github.io/hexobloge2147/" rel="alternate"/>
  <link href="https://2025studentdev.github.io/hexobloge2147/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, e2147</rights>
  <title>E2147dev</title>
  <updated>2026-07-24T05:07:20.794Z</updated>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="Github pages" scheme="https://2025studentdev.github.io/hexobloge2147/tags/Github-pages/"/>
    <content>
      <![CDATA[<p>博客迁移成功<br>已经迁移到Github pages<br>后续可能会使用自动程序调用ai API写文章</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/24/2026-07-24-02/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/24/2026-07-24-02/"/>
    <published>2026-07-24T13:03:37.000Z</published>
    <summary>
      <![CDATA[<p>博客迁移成功<br>已经迁移到Github pages<br>后续可能会使用自动程序调用ai API写文章</p>]]>
    </summary>
    <title>博客迁移成功</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="Github pages" scheme="https://2025studentdev.github.io/hexobloge2147/tags/Github-pages/"/>
    <content>
      <![CDATA[<p>正在尝试用Github pages部署这个博客</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/24/2026-07-24-01/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/24/2026-07-24-01/"/>
    <published>2026-07-24T11:08:38.000Z</published>
    <summary>
      <![CDATA[<p>正在尝试用Github pages部署这个博客</p>]]>
    </summary>
    <title>Github pages</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="Cloudflare" scheme="https://2025studentdev.github.io/hexobloge2147/tags/Cloudflare/"/>
    <category term="Vercel" scheme="https://2025studentdev.github.io/hexobloge2147/tags/Vercel/"/>
    <category term="serverless" scheme="https://2025studentdev.github.io/hexobloge2147/tags/serverless/"/>
    <content>
      <![CDATA[<p>一、起因<br>今天心血来潮，想给自己写一个小 API —— 随机返回一句名人名言。</p><p>需求很简单：</p><p>用 Vercel 的 Edge Function 部署</p><p>访问 &#x2F;api&#x2F;saying 返回一句 JSON</p><p>顺便把根目录用 403 页面挡住，防止爬虫瞎逛</p><p>听起来不难吧？我也觉得不难。</p><p>于是，我打开了 WebStorm，开始了今天这场“自取其辱”之旅。</p><p>二、过程<br>第一步：创建项目<br>bash<br>npx create-next-app@latest edgeapi<br>一路选默认，TypeScript + App Router，顺顺利利。</p><p>然后删掉模板文件，只留下：</p><p>app&#x2F;api&#x2F;saying&#x2F;route.ts —— 我的名言 API</p><p>lib&#x2F;sayings.ts —— 250+ 条名言数据</p><p>public&#x2F;index.html —— 403 页面</p><p>本地跑起来：</p><p>bash<br>npm run dev<br>访问 <a href="http://localhost:3000/api/saying%EF%BC%8C%E8%BF%94%E5%9B%9E%EF%BC%9A">http://localhost:3000/api/saying，返回：</a></p><p>json<br>{<br>“text”: “我们也许再也不会见面了吧，因此我绝对不会忘了你的声音…”<br>}<br>完美。 我当时觉得，这波稳了。</p><p>第二步：部署到 Vercel<br>bash<br>vercel –prod<br>构建日志一路飘绿：</p><p>text<br>Route (app)<br>└ ƒ &#x2F;api&#x2F;saying<br>Build Completed in 21s<br>Deployment completed<br>看到这行的时候，我差点笑出声 —— 这玩意儿也太简单了吧？</p><p>第三步：访问测试<br>打开浏览器，输入：</p><p>text<br><a href="https://edgeapi.vercel.app/api/saying">https://edgeapi.vercel.app/api/saying</a><br>然后屏幕上是：</p><p>text<br>404: NOT_FOUND<br>Code: NOT_FOUND<br>ID: arn1::jcwxk-1784362428761-eb21f87aea39<br>？？？</p><p>我刷新。再刷新。换浏览器。换手机。清缓存。</p><p>还是 404。</p><p>三、排查之路（原地打转）<br>第一轮：路径问题？<br>我反复确认：</p><p>app&#x2F;api&#x2F;saying&#x2F;route.ts 存在</p><p>文件内容正确</p><p>导出 GET 函数</p><p>声明了 export const runtime &#x3D; ‘edge’</p><p>路径没问题。</p><p>第二轮：部署问题？<br>重新部署：</p><p>bash<br>vercel –prod –force<br>构建成功，部署完成，访问，还是 404。</p><p>第三轮：文件名大小写？<br>检查文件名：route.ts，全小写，没问题。</p><p>第四轮：根目录 403 页面冲突？<br>删除 public&#x2F;index.html，重新部署，访问 &#x2F;api&#x2F;saying，还是 404。</p><p>好，排除。</p><p>第五轮：Vercel 日志？<br>去 Vercel 仪表盘的 Functions 和 Logs 里翻了一遍，没有报错，没有异常，就像这个路由压根不存在一样。</p><p>四、我放弃了<br>折腾了整整一个下午。</p><p>从信心满满，到一脸茫然，到满头问号，到最后坐在电脑前发呆。</p><p>所有能想到的地方都检查了：</p><p>路径没错</p><p>代码没问题</p><p>部署成功了</p><p>日志没有报错</p><p>但它就是 404。</p><p>五、结论<br>我水平太菜了。</p><p>排查不出来，就是排查不出来。</p><p>这不是 Vercel 的问题，也不是 Next.js 的问题，是我的问题 —— 我还没到那个能一眼看穿问题的水平。</p><p>六、下次再战<br>今天先认输。</p><p>但我不会一直认输。</p><p>下次我会：</p><p>用更小的 Demo 项目先验证 Edge Function 能不能跑通</p><p>检查 Vercel 的项目配置是不是哪里不对</p><p>问问 ChatGPT 有没有什么隐藏的坑</p><p>等我把这个问题搞明白了，我会写一篇 《我是如何解决 Vercel Edge Function 部署 404 问题的》，把今天的坑全部填上。</p><p>贴一下日志</p><p>16:00:41.538<br>⚠ Using edge runtime on a page currently disables static generation for that page<br>16:00:41.548<br>Generating static pages using 1 worker (0&#x2F;2) …<br>16:00:41.663<br>✓ Generating static pages using 1 worker (2&#x2F;2) in 115ms<br>16:00:41.669<br>Finalizing page optimization …<br>16:00:41.674<br>16:00:41.678<br>Route (app)<br>16:00:41.678<br>┌ ○ &#x2F;_not-found<br>16:00:41.679<br>└ ƒ &#x2F;api&#x2F;saying<br>16:00:41.679<br>16:00:41.679<br>16:00:41.679<br>○  (Static)   prerendered as static content<br>16:00:41.679<br>ƒ  (Dynamic)  server-rendered on demand<br>16:00:41.680<br>16:00:42.222<br>Build Completed in &#x2F;vercel&#x2F;output [21s]<br>16:00:42.324<br>Deploying outputs…<br>16:00:43.057<br>Deployment completed<br>16:00:43.170<br>Creating build cache…<br>16:00:57.572<br>Created build cache: 14s<br>16:00:57.573<br>Uploading build cache [109.55 MB]<br>16:00:59.690<br>Build cache uploaded: 2.118s</p><p>后记<br>就在我准备放弃的时候，突然想到：要不试试 Cloudflare Workers？</p><p>结果 20 分钟就搞定了。</p><p>对比<br>Vercel Edge Function：折腾一下午，还是 404</p><p>Cloudflare Workers：改一下代码，点部署，一次成功</p><p>链接：blog.e.002147.xyz&#x2F;2026&#x2F;07&#x2F;18&#x2F;7&#x2F;</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/18/8/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/18/8/"/>
    <published>2026-07-18T20:26:49.000Z</published>
    <summary>
      <![CDATA[<p>一、起因<br>今天心血来潮，想给自己写一个小 API —— 随机返回一句名人名言。</p>
<p>需求很简单：</p>
<p>用 Vercel 的 Edge Function 部署</p>
<p>访问 &#x2F;api&#x2F;saying 返回一句 JSON</p>]]>
    </summary>
    <title>折腾了一下午 Vercel Edge Function，我认输了</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="Cloudflare" scheme="https://2025studentdev.github.io/hexobloge2147/tags/Cloudflare/"/>
    <content>
      <![CDATA[<p>一、项目背景<br>在网站开发中，为页面增添动态文化元素（如随机展示古诗词、名人名言或励志短句）是提升用户体验的常见方式。传统方案需要购置服务器、搭建后端服务并维护数据库，对于轻量化场景而言，运维成本过高。</p><p>本文记录了一种极简实现方案：仅使用单个 JavaScript 文件，借助 Cloudflare Workers 边缘计算平台，部署一个高可用、低延迟的随机内容 API 服务。</p><p>二、技术选型<br>计算平台：Cloudflare Workers，基于 V8 引擎的全球分布式无服务器函数，支持就近响应，冷启动时间接近零。</p><p>代码形态：单一 index.js 文件，无外部依赖，无需构建工具，符合 Serverless 函数即服务的核心理念。</p><p>数据存储：将语录数据集直接以 JavaScript 数组形式内置于代码中，避免引入外部数据库，降低网络 I&#x2F;O 延迟。</p><p>三、实现细节<br>核心逻辑：</p><p>监听所有 HTTP GET 请求（路径可扩展设计）。</p><p>从预置的语料库中通过 Math.random() 均匀随机选取一条条目。</p><p>构造标准的 JSON 响应结构，包含内容文本、类别标签及可选的出处信息。</p><p>设置 CORS 响应头，允许任意域名进行跨域调用，便于前端直接 fetch 消费。</p><p>部署流程：</p><p>登录 Cloudflare Dashboard，进入 Workers 模块。</p><p>新建服务，将完整 JavaScript 代码粘贴至在线编辑器。</p><p>点击“保存并部署”，系统自动生成一个 *.workers.dev 或自定义域名的公网访问地址。</p><p>最终访问端点：<a href="https://api.x.1f.cc.cd/">https://api.x.1f.cc.cd</a></p><p>该地址已绑定自定义路由，无需额外配置网关或负载均衡器。</p><p>四、应用场景<br>企业官网页脚或侧边栏的每日一句展示。</p><p>个人博客的随机签名档模块。</p><p>小程序或移动端应用内的激励文案组件。</p><p>命令行工具（curl 调用）获取灵感语录。</p><p>调用示例（JavaScript）：</p><p>javascript<br>fetch(‘<a href="https://api.x.1f.cc.cd/">https://api.x.1f.cc.cd</a>‘)<br>.then(response &#x3D;&gt; response.json())<br>.then(data &#x3D;&gt; console.log(data.quote))<br>.catch(error &#x3D;&gt; console.error(‘请求失败:’, error));<br>五、性能与成本优势<br>边缘计算：请求在离用户最近的 Cloudflare 节点完成计算，平均响应时间 &lt; 50ms。</p><p>免费额度：每日 10 万次请求以内完全免费，适合中小型站点及个人项目。</p><p>零运维：无需管理操作系统、安全补丁或进程守护，平台自动扩缩容。</p><p>六、注意事项与免责声明<br>免责声明：</p><p>本 API 服务（api.x.1f.cc.cd）基于个人技术验证目的而部署，运行于 Cloudflare Workers 免费计划资源之上。</p><p>服务方不提供任何形式的稳定性承诺，包括但不限于可用性、响应时间、数据完整性和持续运营保障。</p><p>该服务可能因账户额度耗尽、平台策略变更、域名续费失败或代码维护调整而随时中断或终止，恕不另行通知。</p><p>使用者应自行评估风险，不建议将本服务用于生产环境、商业系统、关键业务流程或任何对可靠性有法定或合同性要求的场景。</p><p>对于因使用或无法使用本 API 所导致的任何直接或间接损失，服务提供者不承担任何法律责任。</p><p>七、结语<br>该实践展示了 Serverless 架构在极简场景下的巨大灵活性——用最低的维护成本，实现一个全球可用的功能性 API。对于开发者而言，这是一种“够用就好”的务实选择，同时也提醒我们：免费公共服务有其边界，合理预期与备用方案永远是工程实践的必要组成部分。</p><p>如需查阅源代码或了解具体部署步骤，可参考 Cloudflare Workers 官方文档。</p><p>（AI真是太好用了）</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/18/7/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/18/7/"/>
    <published>2026-07-18T18:35:16.000Z</published>
    <summary>
      <![CDATA[<p>一、项目背景<br>在网站开发中，为页面增添动态文化元素（如随机展示古诗词、名人名言或励志短句）是提升用户体验的常见方式。传统方案需要购置服务器、搭建后端服务并维护数据库，对于轻量化场景而言，运维成本过高。</p>
<p>本文记录了一种极简实现方案：仅使用单个 JavaSc]]>
    </summary>
    <title>基于 Cloudflare Workers 的无服务器随机语录 API 实践</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="no" scheme="https://2025studentdev.github.io/hexobloge2147/tags/no/"/>
    <content>
      <![CDATA[<p>  现在我根本不知道该写什么<br>  一点思路都没有</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/17/6/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/17/6/"/>
    <published>2026-07-17T09:35:16.000Z</published>
    <summary>
      <![CDATA[<p>  现在我根本不知道该写什么<br>  一点思路都没有</p>]]>
    </summary>
    <title>没有思路</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="hexo" scheme="https://2025studentdev.github.io/hexobloge2147/tags/hexo/"/>
    <category term="butterfly" scheme="https://2025studentdev.github.io/hexobloge2147/tags/butterfly/"/>
    <content>
      <![CDATA[<p>本站已经装上了hexo框架的butterfly主题</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/15/5/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/15/5/"/>
    <published>2026-07-15T15:14:57.000Z</published>
    <summary>
      <![CDATA[<p>本站已经装上了hexo框架的butterfly主题</p>]]>
    </summary>
    <title>butterfly主题</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="CSS" scheme="https://2025studentdev.github.io/hexobloge2147/tags/CSS/"/>
    <category term="前端" scheme="https://2025studentdev.github.io/hexobloge2147/tags/%E5%89%8D%E7%AB%AF/"/>
    <content>
      <![CDATA[<p>在网页设计中，背景往往是用户第一眼感受到的视觉元素。纯色背景虽然简洁，但难免显得有些单调。而CSS渐变背景，就像给网页注入了生命力——色彩之间自然过渡、层次丰富，能让页面瞬间从“平庸”跃升为“高级”。</p><p>今天，我们就来全面拆解CSS渐变背景的玩法。无论你是刚入门的新手，还是想进阶的老手，这篇文章都能帮你把渐变用得得心应手。</p><p>一、渐变到底是什么？<br>简单来说，渐变（Gradient） 就是让两种或多种颜色按照一定规则平滑过渡。在CSS中，我们不需要借助任何图片资源，只需几行代码，浏览器就能实时渲染出流畅的渐变效果。</p><p>CSS支持三种渐变类型：</p><p>线性渐变（linear-gradient） —— 沿直线方向过渡</p><p>径向渐变（radial-gradient） —— 从中心点向外扩散</p><p>锥形渐变（conic-gradient） —— 围绕中心点旋转过渡</p><p>下面我们逐一攻破。</p><p>二、线性渐变：最常用、最灵活</p><ol><li>基础语法<br>css<br>background: linear-gradient(方向, 颜色1, 颜色2, …);<br>最简单的例子——从上到下的渐变：</li></ol><p>css<br>background: linear-gradient(#ff7eb3, #ff758c);<br>2. 控制方向<br>   方向可以用关键词或角度来指定：</p><p>css<br>&#x2F;* 关键词写法 <em>&#x2F;<br>background: linear-gradient(to right, #f093fb, #f5576c);   &#x2F;</em> 从左到右 <em>&#x2F;<br>background: linear-gradient(to bottom right, #4facfe, #00f2fe); &#x2F;</em> 右下方向 *&#x2F;<br>background: linear-gradient(to left, #43e97b, #38f9d7);</p><p>&#x2F;* 角度写法（0deg &#x3D; 从下到上，顺时针增加） <em>&#x2F;<br>background: linear-gradient(45deg, #fa709a, #fee140);   &#x2F;</em> 对角线 *&#x2F;<br>background: linear-gradient(135deg, #a18cd1, #fbc2eb);<br>3. 多色渐变与色标位置<br>   你可以加入任意多种颜色，并用百分比或像素精确控制每种颜色的位置：</p><p>css<br>&#x2F;* 三色渐变 *&#x2F;<br>background: linear-gradient(to right, #f7971e, #ffd200, #f7971e);</p><p>&#x2F;* 精确控制色标位置 *&#x2F;<br>background: linear-gradient(to right,<br>#f7971e 0%,<br>#ffd200 30%,<br>#f7971e 60%,<br>#ffd200 100%<br>);<br>4. 条纹图案：硬边渐变<br>   如果让两个颜色在同一个位置切换，就能形成硬边，做出条纹效果：</p><p>css<br>&#x2F;* 等宽条纹 *&#x2F;<br>background: linear-gradient(<br>45deg,<br>#ff6b6b 25%,<br>#feca57 25%,<br>#feca57 50%,<br>#ff6b6b 50%,<br>#ff6b6b 75%,<br>#feca57 75%<br>);<br>background-size: 60px 60px;<br>这是纯CSS画图案的经典技巧，而且可以无限平铺。</p><p>三、径向渐变：从中心绽放的光晕<br>径向渐变是从一个中心点向外扩散的渐变，特别适合做光晕、按钮背景、圆形徽章等场景。</p><ol><li>基础语法<br>css<br>background: radial-gradient(形状 大小 at 位置, 颜色1, 颜色2, …);<br>最简单的例子：</li></ol><p>css<br>background: radial-gradient(#f093fb, #f5576c);<br>2. 控制形状<br>   circle：圆形</p><p>ellipse：椭圆形（默认）</p><p>css<br>background: radial-gradient(circle, #ffecd2, #fcb69f);<br>background: radial-gradient(ellipse, #a8edea, #fed6e3);<br>3. 控制中心位置<br>   使用 at 关键字定位中心点：</p><p>css<br>background: radial-gradient(circle at top left, #ff9a9e, #fecfef);<br>background: radial-gradient(circle at 30% 70%, #fbc2eb, #a6c1ee);<br>4. 控制大小<br>   用关键词或具体数值控制渐变范围：</p><p>css<br>&#x2F;* closest-side：最近边 *&#x2F;<br>background: radial-gradient(circle closest-side, #ffecd2, #fcb69f);</p><p>&#x2F;* farthest-corner：最远角（默认） *&#x2F;<br>background: radial-gradient(circle farthest-corner, #ffecd2, #fcb69f);<br>实际项目中，用 farthest-corner 能确保渐变填满整个容器，用得最多。</p><p>四、锥形渐变：色彩轮盘，创意无限<br>锥形渐变（conic-gradient）是较新的属性，颜色围绕中心点旋转过渡，常用于色轮、饼图、加载动画等。</p><ol><li>基础语法<br>css<br>background: conic-gradient(颜色1, 颜色2, …);<br>最简单的例子：</li></ol><p>css<br>background: conic-gradient(#f093fb, #f5576c, #4facfe, #43e97b, #f093fb);<br>2. 控制起始角度和中心点<br>   css<br>   &#x2F;* 从45度开始，中心在左上角 *&#x2F;<br>   background: conic-gradient(from 45deg at top left, #ff9a9e, #fecfef, #ff9a9e);<br>3. 制作饼图<br>   利用硬边特性，可以轻松做出饼图：</p><p>css<br>background: conic-gradient(<br>#ff6b6b 0% 30%,<br>#feca57 30% 55%,<br>#48dbfb 55% 75%,<br>#ff9ff3 75% 100%<br>);<br>border-radius: 50%;<br>锥形渐变兼容性已经很好（Chrome 69+、Firefox 83+、Safari 12.1+），可以放心使用。</p><p>五、渐变背景的进阶技巧</p><ol><li>叠加多层渐变<br>CSS允许叠加多个背景，用逗号分隔即可。这是创造复杂纹理的杀手锏：</li></ol><p>css<br>background:<br>radial-gradient(circle at 20% 50%, rgba(255,255,255,0.3) 0%, transparent 50%),<br>linear-gradient(135deg, #667eea 0%, #764ba2 100%);<br>这个技巧可以做出光晕叠加、噪点纹理、毛玻璃质感等高级效果。</p><ol start="2"><li>配合背景尺寸实现平铺<br>结合 background-size，可以让渐变以图案方式平铺：</li></ol><p>css<br>background:<br>linear-gradient(45deg, #ff6b6b 25%, transparent 25%, transparent 75%, #ff6b6b 75%),<br>linear-gradient(45deg, #ff6b6b 25%, transparent 25%, transparent 75%, #ff6b6b 75%);<br>background-size: 40px 40px;<br>background-position: 0 0, 20px 20px;<br>这就是经典的棋盘格图案。</p><ol start="3"><li>让文字也拥有渐变<br>渐变背景不仅可以用于容器，还可以用在文字上：</li></ol><p>css<br>.gradient-text {<br>background: linear-gradient(135deg, #f093fb, #f5576c);<br>-webkit-background-clip: text;<br>background-clip: text;<br>color: transparent;<br>}<br>标题、Logo、强调文字用上渐变，瞬间提升设计感。</p><p>六、实战案例：一个完整的渐变卡片<br>把以上知识综合起来，做一个现代风格的渐变卡片：</p><p>html</p><div class="card">  <h2 class="card-title">渐变卡片</h2>  <p class="card-desc">色彩流动，设计新生</p></div>css.card {  width: 360px;  padding: 48px 32px;  border-radius: 24px;  background: linear-gradient(145deg, #667eea 0%, #764ba2 100%);  box-shadow: 0 20px 60px rgba(102, 126, 234, 0.4);  text-align: center;  position: relative;  overflow: hidden;}<p>&#x2F;* 加一个光晕叠加层，增加质感 *&#x2F;<br>.card::before {<br>content: ‘’;<br>position: absolute;<br>top: -50%;<br>left: -50%;<br>width: 200%;<br>height: 200%;<br>background: radial-gradient(<br>circle at 30% 30%,<br>rgba(255, 255, 255, 0.2) 0%,<br>transparent 60%<br>);<br>pointer-events: none;<br>}</p><p>.card-title {<br>background: linear-gradient(to right, #ffeaa7, #fdcb6e);<br>-webkit-background-clip: text;<br>background-clip: text;<br>color: transparent;<br>font-size: 28px;<br>font-weight: 700;<br>margin-bottom: 8px;<br>}</p><p>.card-desc {<br>color: rgba(255, 255, 255, 0.85);<br>font-size: 16px;<br>}<br>这个案例中，我们用了：</p><p>主背景线性渐变</p><p>伪元素叠加径向渐变做光晕</p><p>文字渐变（background-clip）</p><p>投影让卡片更有层次</p><p>七、性能与可访问性注意事项<br>性能方面：渐变由浏览器GPU加速渲染，性能远优于图片。但不要在一个页面滥用大量超大、复杂的渐变，尤其是动画中的渐变，会影响低端设备的流畅度。</p><p>可访问性：渐变背景上叠加文字时，务必保证足够的对比度。可以在文字下方加一层半透明遮罩，或者使用深色&#x2F;浅色文字配合 text-shadow 提升可读性。</p><p>css<br>&#x2F;* 文字阴影提升可读性 *&#x2F;<br>.card-desc {<br>color: #fff;<br>text-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);<br>}<br>降级方案：对于极老式浏览器，可以在渐变前加一个纯色背景作为 fallback：</p><p>css<br>background: #667eea; &#x2F;* 降级纯色 *&#x2F;<br>background: linear-gradient(145deg, #667eea, #764ba2);<br>八、写在最后<br>CSS渐变背景的魅力在于——用最少的代码，创造最丰富的视觉层次。从简单的双色过渡，到多层叠加的复杂纹理，再到配合动画实现的流动色彩，渐变都能轻松胜任。</p><p>掌握渐变的本质，就是掌握 方向、颜色、位置 这三个维度的组合。多动手写、多尝试不同的搭配，你会发现自己能创造出越来越多令人惊喜的效果。</p><p>好的设计，从让背景流动起来开始。</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/14/4/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/14/4/"/>
    <published>2026-07-14T18:36:49.000Z</published>
    <summary>
      <![CDATA[<p>在网页设计中，背景往往是用户第一眼感受到的视觉元素。纯色背景虽然简洁，但难免显得有些单调。而CSS渐变背景，就像给网页注入了生命力——色彩之间自然过渡、层次丰富，能让页面瞬间从“平庸”跃升为“高级”。</p>
<p>今天，我们就来全面拆解CSS渐变背景的玩法。无论你是刚入门]]>
    </summary>
    <title>玩转CSS渐变背景：从入门到精通，让你的网页色彩流动起来</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="Cloudflare" scheme="https://2025studentdev.github.io/hexobloge2147/tags/Cloudflare/"/>
    <category term="Hexo" scheme="https://2025studentdev.github.io/hexobloge2147/tags/Hexo/"/>
    <category term="博客搭建" scheme="https://2025studentdev.github.io/hexobloge2147/tags/%E5%8D%9A%E5%AE%A2%E6%90%AD%E5%BB%BA/"/>
    <content>
      <![CDATA[<p>使用 Cloudflare Pages 部署 Hexo 静态博客完整指南<br>在众多静态站点托管平台中，Cloudflare Pages 凭借其全球 CDN 加速、自动化构建流程和简便的 Git 集成，成为部署 Hexo 博客的理想选择。本文将系统性地介绍如何将本地编写的 Hexo 站点无缝部署至 Cloudflare Pages，整个过程无需复杂服务器配置，仅需一个 GitHub 仓库即可完成。</p><p>一、前期准备<br>在开始部署之前，请确保本地开发环境已安装以下工具：</p><p>Node.js（建议使用 LTS 版本）</p><p>Git 版本控制系统</p><p>Hexo 命令行工具（可通过 npm install -g hexo-cli 全局安装）</p><p>接着，在本地创建一个新的 Hexo 项目：</p><p>bash<br>hexo init my-blog<br>cd my-blog<br>npm install<br>如需测试，可运行 hexo server 并在浏览器访问 <a href="http://localhost:4000/">http://localhost:4000</a> 预览站点。确认无误后，即可进行后续的版本控制与部署操作。</p><p>二、将项目推送至 GitHub<br>Cloudflare Pages 依赖 Git 仓库作为代码源，因此需要先将本地项目上传至 GitHub。</p><p>在 GitHub 上新建一个仓库（建议设置为公开或私有均可，Cloudflare 支持私有仓库）。</p><p>在本地项目根目录执行以下命令，初始化 Git 并推送代码：</p><p>bash<br>git init<br>git add .<br>git commit -m “初始化 Hexo 博客”<br>git remote add origin <a href="https://github.com/%E4%BD%A0%E7%9A%84%E7%94%A8%E6%88%B7%E5%90%8D/%E4%BB%93%E5%BA%93%E5%90%8D.git">https://github.com/你的用户名/仓库名.git</a><br>git push -u origin main<br>请注意，若默认分支为 master，请相应调整上述命令。</p><p>三、在 Cloudflare Pages 中连接仓库<br>登录 Cloudflare 仪表盘，在左侧菜单中点击 Workers &amp; Pages。</p><p>点击 创建应用程序，选择 Pages 选项卡，然后点击 连接到 Git。</p><p>授权 Cloudflare 访问您的 GitHub 账号，并从仓库列表中选择刚刚推送的 Hexo 项目。</p><p>在“设置构建和部署”页面中，配置以下参数：</p><p>生产分支：选择 main（或您的默认分支）</p><p>构建命令：填写 npm run build（Hexo 默认构建脚本）</p><p>构建输出目录：填写 public（Hexo 生成的静态文件存放目录）</p><p>点击 保存并部署，Cloudflare Pages 将自动拉取代码、执行构建命令，并将生成的静态文件发布至全球边缘网络。</p><p>四、部署完成与站点访问<br>部署过程通常在数十秒内完成。成功后，系统会分配一个 *.pages.dev 的默认域名，您可以直接访问该链接查看您的 Hexo 博客。</p><p>若您拥有自定义域名，可在项目的 自定义域 选项卡中添加，并按提示完成 DNS 解析（建议使用 Cloudflare 的 DNS 服务以充分利用其安全性与性能优化）。</p><p>五、日常更新流程<br>每次您需要更新博客内容时，只需在本地执行 hexo new “新文章标题” 编写 Markdown 文件，然后重新构建并推送代码：</p><p>bash<br>git add .<br>git commit -m “发布新文章”<br>git push<br>Cloudflare Pages 会自动检测到仓库变更并重新部署，整个过程无需人工干预，实现持续集成与持续交付（CI&#x2F;CD）。</p><p>结语<br>通过以上步骤，您已成功将 Hexo 静态博客部署至 Cloudflare Pages。该方案不仅提供了快速的全球访问体验，还免去了维护服务器的繁琐工作，让您能够专注于内容创作。无论是个人博客还是项目文档，Cloudflare Pages 都是一个可靠且高效的选择。</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/14/3/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/14/3/"/>
    <published>2026-07-14T18:08:48.000Z</published>
    <summary>
      <![CDATA[<p>使用 Cloudflare Pages 部署 Hexo 静态博客完整指南<br>在众多静态站点托管平台中，Cloudflare Pages 凭借其全球 CDN 加速、自动化构建流程和简便的 Git 集成，成为部署 Hexo 博客的理想选择。本文将系统性地介绍如何将本地编写的]]>
    </summary>
    <title>使用 Cloudflare Pages 部署 Hexo 静态博客完整指南</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="学术研究" scheme="https://2025studentdev.github.io/hexobloge2147/categories/%E5%AD%A6%E6%9C%AF%E7%A0%94%E7%A9%B6/"/>
    <category term="逻辑" scheme="https://2025studentdev.github.io/hexobloge2147/tags/%E9%80%BB%E8%BE%91/"/>
    <category term="论文" scheme="https://2025studentdev.github.io/hexobloge2147/tags/%E8%AE%BA%E6%96%87/"/>
    <category term="学术" scheme="https://2025studentdev.github.io/hexobloge2147/tags/%E5%AD%A6%E6%9C%AF/"/>
    <content>
      <![CDATA[<p>摘要：本文围绕文章这一核心议题展开了全面而深入的研究。通过对文章的系统性分析，我们发现文章在文章的框架内具有极为重要的文章意义。第一章绪论部分详细阐述了文章的研究背景，即文章作为文章领域的关键概念，一直以来都受到文章研究者的广泛关注。第二章方法论部分介绍了研究文章所采用的主要方法，包括但不限于用文章的视角审视文章、用文章的工具测量文章、以及用文章的理论解释文章。第三章结论部分明确指出，经过严谨的论证，文章最终指向的结论就是文章自身，这与我们的初始假设高度一致。关键词：文章；文章研究；文章分析；文章与文章的关系。</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/14/2/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/14/2/"/>
    <published>2026-07-14T14:35:00.000Z</published>
    <summary>
      <![CDATA[<p>摘要：本文围绕文章这一核心议题展开了全面而深入的研究。通过对文章的系统性分析，我们发现文章在文章的框架内具有极为重要的文章意义。第一章绪论部分详细阐述了文章的研究背景，即文章作为文章领域的关键概念，一直以来都受到文章研究者的广泛关注。第二章方法论部分介绍了研究文章所采用的主]]>
    </summary>
    <title>文章研究的文章学分析</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
  <entry>
    <author>
      <name>e2147</name>
    </author>
    <category term="随笔" scheme="https://2025studentdev.github.io/hexobloge2147/categories/%E9%9A%8F%E7%AC%94/"/>
    <category term="哲学" scheme="https://2025studentdev.github.io/hexobloge2147/tags/%E5%93%B2%E5%AD%A6/"/>
    <category term="思辨" scheme="https://2025studentdev.github.io/hexobloge2147/tags/%E6%80%9D%E8%BE%A8/"/>
    <category term="逻辑" scheme="https://2025studentdev.github.io/hexobloge2147/tags/%E9%80%BB%E8%BE%91/"/>
    <content>
      <![CDATA[<p>众所周知，文章作为一种客观存在的事物，其本身所具有的本质特征决定了它必然是以文章的形态呈现在世人面前的。这一点，从古至今，无论是东方还是西方，无论是学术界还是日常生活领域，都没有任何争议。因为文章就是文章，它不可能变成别的东西，正如别的东西也不可能变成文章一样，这是事物发展的客观规律所决定的。</p><p>那么，为什么说文章的本质就是文章本身呢？这个问题看似简单，实则蕴含着深刻的道理。首先，从定义的角度来看，文章之所以被称为文章，正是因为它具备了文章所应有的全部属性和特征。如果它不具备这些属性和特征，那么它就不能被称为文章，而应该被称为其他东西。但事实上，它确实就是文章，所以它毫无疑问地就是文章本身。</p><p>其次，从认知的角度来说，人们对文章的认识，也是基于文章所呈现出来的种种表象而逐渐形成的。当我们看到文章的时候，我们首先会意识到这是一个文章，然后我们才会进一步思考这个文章与其他事物之间的关系。然而，无论我们如何思考，如何分析，最终得出的结论依然是：这是一个文章，而且它确实就是一个文章。</p><p>再者，从实践的角度来看，文章在日常生活中的应用也是非常广泛的。无论是谁，在遇到文章的时候，都会自然而然地将其视为文章来对待。这种对待方式，既符合常理，也符合逻辑，因为文章本来就是文章，不把它当成文章反而才是奇怪的事情。所以，我们完全可以这样说：文章就是文章，这一点是毋庸置疑的。</p><p>有人可能会问，那文章和其他的东西有什么区别呢？这个问题问得很好，但其实答案也很简单——文章和其他东西的区别就在于，文章是文章，而其他东西不是文章。这就是最根本的区别，也是最重要的区别。如果非要进一步解释的话，那只能说，文章之所以是文章，是因为它具备了文章的属性，而其他东西不具备这些属性，所以其他东西就不是文章。</p><p>总而言之，文章作为一种独特的存在，它的独特性恰恰体现在它就是一个文章。无论我们从哪个角度去观察，从哪个层面去分析，最终得到的结论都不会改变。文章就是文章，以前是文章，现在是文章，将来也依然是文章。这是不会因为任何外部条件的变化而改变的，因为这是文章与生俱来的本质属性。</p><p>最后，我们不妨这样说：文章的意义就在于它本身是文章，而它本身是文章这件事，本身就是一件非常有意义的事情。至于这个意义究竟是什么，那大概就是——文章是文章，仅此而已，但又不仅如此。毕竟，文章作为文章，它承载了文章之所以为文章的全部内涵，而这些内涵，恰恰构成了文章存在的全部价值。</p>]]>
    </content>
    <id>https://2025studentdev.github.io/hexobloge2147/2026/07/14/1/</id>
    <link href="https://2025studentdev.github.io/hexobloge2147/2026/07/14/1/"/>
    <published>2026-07-14T14:30:00.000Z</published>
    <summary>
      <![CDATA[<p>众所周知，文章作为一种客观存在的事物，其本身所具有的本质特征决定了它必然是以文章的形态呈现在世人面前的。这一点，从古至今，无论是东方还是西方，无论是学术界还是日常生活领域，都没有任何争议。因为文章就是文章，它不可能变成别的东西，正如别的东西也不可能变成文章一样，这是事物发展]]>
    </summary>
    <title>论文章的本质</title>
    <updated>2026-07-24T05:07:20.794Z</updated>
  </entry>
</feed>
