share-image
ESC

AI 驱动开发:从零打造现代化的 Hexo 主题 "Awen"

这款主题不仅拥有现代化的 UI 设计,还深度集成了运动数据可视化、AI 对话助手等硬核功能。本文将详细复盘这次 “AI 驱动开发” 的全过程,解析主题背后的技术细节。

1. 设计理念与架构规划

1.1 核心目标

传统的 Hexo 主题大多偏向于纯文本内容的展示,而我希望 “Awen” 主题能体现我的个人特质:“代码与运动”。因此,确立了以下核心特性:

  • 沉浸式首屏 (Hero Splash):结合地图轨迹动画,展示马拉松运动精神。
  • 极简主义设计:黑白灰为主色调,支持自动/手动深色模式。
  • 数据可视化:原生支持 GPX 数据解析与图表渲染。
  • AI 集成:内置 AI 聊天页面,作为个人数字分身。

1.2 技术选型

  • 模板引擎: EJS (Hexo 默认,逻辑简单直接)
  • 样式预处理: Stylus (简洁高效,无需括号分号)
  • 前端库:
    • AMap (高德地图 JS API 2.0)
    • Chart.js (轻量级图表库)
    • FontAwesome (图标库)
  • 构建工具: Hexo Native

2. AI 赋能的关键功能实现

在开发过程中,我主要负责“提出需求”和“Code Review”,而 AI 负责具体的代码实现。以下是几个最具代表性的功能模块。

2.1 动态马拉松轨迹动画 (Hero Splash)

这是主题最复杂的功能之一。我需要解析 .gpx 文件,将经纬度坐标转换为高德地图坐标(纠偏),并在地图上绘制出动态生长的轨迹。

AI 的贡献:

  1. 坐标转换算法:AI 直接提供了 WGS84 到 GCJ02 的坐标转换函数,省去了我查找公式和调试的时间。
  2. 动画逻辑:利用 requestAnimationFrame 实现平滑的轨迹生长动画,并计算缓动效果 (EaseOutQuart),让动画看起来更自然。
  3. 数据解析:自动生成了 XML 解析逻辑,从 GPX 文件中提取 trkpt 及其扩展数据(心率、步频)。
// AI 生成的坐标转换核心片段
function wgs84ToGcj02(lat, lon) {
if (outOfChina(lat, lon)) return [lon, lat];
let dLat = transformLat(lon - 105.0, lat - 35.0);
let dLon = transformLon(lon - 105.0, lat - 35.0);
// ... 复杂的数学计算 ...
return [mgLon, mgLat];
}

2.2 Stats Overlay (数据统计浮层)

为了让首屏动画更具科技感,我们设计了一个悬浮的数据面板。

实现细节:

  • 布局:AI 建议使用 Flexbox 布局,并实现了折叠/展开的交互逻辑,适配移动端。
  • 实时更新:在动画循环中,AI 编写了逻辑来根据当前进度索引 (currentIdx) 查找对应的 GPX 数据点,并实时更新 DOM 元素。
  • 心率区间可视化:根据用户的年龄和静息心率,AI 自动生成了心率区间计算公式,并动态改变心率数值的颜色(热身、有氧、无氧等)。
// Stylus 样式的磨砂玻璃效果
.stats-overlay
background rgba(10, 10, 10, 0.95)
backdrop-filter blur(20px)
transition opacity 0.5s ease

2.3 深色模式与响应式设计

我要求主题必须支持深色模式,且能跟随系统自动切换。

AI 的解决方案:

  • 使用 CSS Variables (:root vs [data-theme="dark"]) 定义全局颜色变量。
  • 编写了一段精简的内联 Script 放在 <head> 中,防止页面闪烁 (FOUC)。
  • 针对移动端 (Max-width: 768px),AI 自动调整了 Sidebar 的行为,将其改为抽屉式导航,并优化了 Padding 和字体大小。
// 防闪烁的深色模式检测脚本
(function() {
const savedTheme = localStorage.getItem('theme') || 'dark';
// ... 判断逻辑 ...
document.documentElement.setAttribute('data-theme', shouldBeDark ? 'dark' : 'light');
})();

2.4 AI 聊天页面集成

为了集成我的 AI 智能体,我在主题中新增了一个 ai-chat 布局。

开发过程:

  • 我只需告诉 AI:“我需要一个类似 ChatGPT 的聊天界面,左边是会话列表,右边是对话框。”
  • AI 生成了完整的 HTML 结构和 CSS 样式,包括气泡消息、打字机效果光标、滚动到底部等细节。
  • 虽然后端 API 调用逻辑需要我配置代理 (coze_proxy_url),但前端的 UI 交互代码几乎是 100% 由 AI 生成的。

3. 开发体验总结

3.1 效率提升

使用 AI 开发 Hexo 主题,效率提升是数量级的。

  • 样板代码:EJS 的循环结构、Stylus 的 Reset 样式,AI 秒级生成。
  • 复杂逻辑:地图 API 的调用、Canvas 图表的配置、数学计算,这些通常需要查阅文档耗时数小时的工作,AI 分分钟搞定。

3.2 角色转变

开发者从“码农”变成了“产品经理”和“架构师”。我不再纠结于 div 怎么居中,而是专注于:

  • 交互流程是否顺畅?
  • 配色是否符合审美?
  • 功能模块如何解耦?

3.3 遇到的挑战

AI 并非万能。在开发过程中也遇到了一些坑:

  • 上下文丢失:当文件过长时,AI 可能会忘记之前的变量定义。
  • 幻觉:偶尔会编造不存在的 Hexo 辅助函数,需要人工校验。
  • 样式冲突:生成的 CSS 有时会覆盖全局样式,需要手动调整优先级。

4. 结语

“Awen” 主题的诞生,验证了在 AI 辅助下,个人开发者可以以极低的成本打造出专业级的产品。这不仅是一个博客主题,更是我对未来编程范式的一次实践。

如果你也想拥有一款独一无二的博客主题,不妨试试打开 IDE,唤起你的 AI 助手,开始你的创造之旅。

文章作者:阿文
文章链接: https://www.awen.me/post/364c04ee.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客