📢 新文章推送 · 每周更新优质内容 · 订阅更新 →
向下滚动
智能家居

在线工具集功能实现全解析

AI 智能总结

前言

在线工具集是我博客"探索"板块下体量最大的功能模块。它并非简单的外链集合,而是一套完整的数据驱动、可扩展、纯前端的工具平台。截至本文撰写时,系统已收录 131 个工具,覆盖 15 个分类,全部通过 Hugo 模板引擎 + JavaScript 实现。


一、整体架构

1data/tools.toml           工具数据定义(名称/分类/图标/URL
2        
3        
4layouts/tools/list.html   工具列表页(分类分组 + 侧边栏筛选)
5        
6        ├── partials/tools/sidebar.html   左侧菜单栏(分类导航)
7        ├── partials/tools/styles.html    共享样式体系
8        └── partials/tools/{id}.html      每个工具的独立页面(42+ 个)

1.1 数据层 (data/tools.toml)

每个工具由以下字段定义:

1[[tools]]
2  id = "json-formatter"
3  name = "JSON 格式化"
4  icon = "fa-solid fa-code"
5  category = "开发工具"
6  categoryIcon = "fa-solid fa-laptop-code"
7  color = "#667eea"
8  desc = "JSON 格式化、压缩、校验与转换"
9  url = "/tools/json-formatter/"

Hugo 通过 hugo.Data.tools.tools 自动读取该数据,无需任何 Go 代码介入。

1.2 分类体系

系统按照功能域划分为 15 个分类,每个分类有独立的图标和品牌色:

分类图标工具数说明
文本工具fa-solid fa-align-left20文本格式化、编码转换等
数学计算fa-solid fa-calculator18科学计算、统计、几何等
开发工具fa-solid fa-laptop-code15JSON/HTML/XML/JS 格式化等
信息速查fa-solid fa-magnifying-glass15国家区号、ASCII 表、Emoji 等
时间日期fa-regular fa-clock9倒计时、时区转换、日期计算等
财务计算fa-solid fa-yen-sign8复利、贷款、百分比等
编解码工具fa-solid fa-key7Base64/URL/Unicode 等
健康计算fa-solid fa-heart-pulse7BMI/体脂/BMR/TDEE 等
随机工具fa-solid fa-shuffle6随机数/决策/色卡/硬币等
图片工具fa-solid fa-image6二维码/条形码/取色器等
数据转换fa-solid fa-arrow-right-arrow-left5JSON/TOML/CSV 互转等
颜色工具fa-solid fa-palette4配色方案、颜色转换等
网络工具fa-solid fa-globe4IP/UserAgent 解析等
CSS/设计fa-brands fa-css3-alt4CSS 格式化/预览等
哈希与加密fa-solid fa-shield-halved3MD5/SHA/密码/UUID 生成

二、工具列表页

2.1 侧边栏分类导航

左侧菜单是一个基于 sticky 定位的固定侧边栏,按分类分组展示所有工具。点击分类标签可快速滚动到对应区域:

1{{ partial "tools/sidebar.html" . }}

2.2 卡片网格

右侧主区域按分类分组渲染工具卡片。每个卡片包含:

  • 品牌色 顶部色条(color 字段)
  • Font Awesome 图标icon 字段)
  • 工具名称 + 描述文本
  • 点击跳转到对应的独立工具页面(url 字段)
1// list.html 中的渲染逻辑
2var toolsData = {{ $toolsJson }};  // Hugo 将 TOML 数据注入 JS

卡片网格使用 CSS Grid 响应式布局,桌面端 3-4 列,移动端自适应为 1-2 列。


三、独立工具页面

每个工具对应一个独立 partial 文件,位于 layouts/partials/tools/{id}.html。页面分为两类:

3.1 纯计算/展示类工具

以 BMI 计算器为例,整个页面就是一个独立的 HTML 片段:

1<div class="tool-section">
2  <div class="tool-title"><i class="fa-solid fa-weight-scale"></i> BMI 计算器</div>
3  <div class="tool-input-group">
4    <label class="tool-label">身高 (cm)</label>
5    <input type="number" id="bmi-height" class="tool-input" ...>
6  </div>
7  ...
8</div>

3.2 游戏/交互类工具

扫雷、五子棋这类工具同样是独立 partial,但包含完整的 Canvas 操作和事件处理:

1<div class="minesweeper-page" id="minesweeper-page">
2  <div class="minesweeper-page-header">...</div>
3  <div class="minesweeper-main">
4    <div class="minesweeper-board" id="ms-board"></div>
5    ...
6  </div>
7</div>

四、共享样式体系

所有工具页面共享一套 CSS 变量 + 语义化 class 体系(partials/tools/styles.html):

4.1 CSS 变量

 1:root,[data-theme="light"]{
 2  --primary-color:#667eea;
 3  --primary-hover:#5a6fd6;
 4  --bg-highlight:rgba(102,126,234,.08);
 5  --success-color:#22c55e;
 6  --warning-color:#f59e0b;
 7  --error-color:#ef4444;
 8  --info-color:#3b82f6;
 9}
10[data-theme="dark"]{
11  --primary-color:#818cf8;
12  --primary-hover:#a5b4fc;
13  --bg-highlight:rgba(129,140,248,.12);
14  ...
15}

4.2 语义化 Class

Class用途
.tool-section工具内容分区容器
.tool-title工具标题(含图标)
.tool-row横向排列容器(替代内联 display:flex
.tool-input-group输入项容器(label + input)
.tool-label表单标签
.tool-input文本输入框
.tool-textarea多行文本域
.tool-btn通用按钮
.tool-btn-primary主要操作按钮
.tool-btn-group按钮组
.tool-result结果展示区
.tool-copy-btn复制按钮

五、暗色模式适配

工具页面通过两级变量机制实现暗色模式无缝切换:

  1. CSS 变量层:所有颜色通过 var(--xxx, #fallback) 引用,暗色变量在 [data-theme="dark"] 下全局切换
  2. JS 动态层:JavaScript 中生成的元素颜色也改用 CSS 变量引用
1// 旧写法(硬编码)
2color: '#3b82f6'
3
4// 新写法(变量化)
5color: 'var(--primary-color,#667eea)'

六、扩展机制

添加新工具只需两步:

  1. data/tools.toml 新增一条工具记录
  2. layouts/partials/tools/{id}.html 创建工具实现

无需修改任何 Go 代码或前端路由,Hugo 会自动发现新页面。

后台管理系统也提供完整的 CRUD 操作:views/Tools/Index.vueGET/PUT /api/tools → 全量读写 data/tools.toml


七、技术演进

版本时间变化
v1.1.02026-05-30首次上线,37 个外链工具(站长工具、SoJSON 等)
v1.5.42026-06-04全面自建化,URL 替换为 /tools/{id}/,42 个纯前端工具
v1.5.52026-06-05扩展至 131 个工具、15 个分类,暗色模式+表单规范全面统一

八、总结

在线工具集的设计体现了几个核心原则:

  • 数据驱动:所有工具元数据集中在 data/tools.toml,Hugo 原生读取,零额外依赖
  • 可扩展:添加新工具 = 新增 TOML 记录 + 一个 partial 文件,改动量极小
  • 纯前端:所有工具逻辑在浏览器端运行,无需后端计算支持
  • 统一规范:CSS 变量 + 语义化 class,确保 100+ 个工具页面风格一致
  • 暗色友好:两级变量体系,自动适配亮/暗主题

这套架构让博客从一个静态内容站点,拓展成了一个功能完备的在线工具箱,真正做到了"一个站点,多种用途"。

9 / 9
版权声明

本文作者 Lumin

本文链接 https://www.zhengquan.xyz/smart/tools-feature/

许可协议 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

请作者喝杯咖啡 ☕

  • 微信打赏
    微信支付
  • 支付宝打赏
    支付宝
点击按钮查看打赏二维码
🎁 推荐工具
试试这些实用在线工具,提升工作效率
前往工具集 →

留言评论

期待你的想法

评论加载中