像素织梦 (PixelKnit) v2.0:模块化架构重构与用户体验全面升级
引言
在 v1.1 版本发布后,像素织梦 (PixelKnit) 已经成为一个功能完整的编织引导应用。但随着功能的不断扩展,原有的单体代码结构逐渐变得难以维护。因此,我们推出了 v2.0 版本,进行了全面的架构重构和用户体验升级。
像素织梦 v2.0 - 从单体应用到模块化架构,从功能堆砌到用户体验优化。
图1:像素织梦 (PixelKnit) Logo - 像素艺术风格的品牌标识
🆕 v2.0 版本亮点
v2.0 版本的核心更新:
- 🏗️ 模块化架构重构:采用 ES6 模块化设计,代码结构清晰、易于维护
- 📐 三栏布局设计:优化的布局系统,避免内容遮挡
- 👁️ 侧边栏显示/隐藏:专注模式,可隐藏左右侧边栏
- 🎯 悬浮mini菜单:可拖动的快捷操作菜单
- 📏 智能视图放大:隐藏侧边栏时自动扩大中间视图
- 🔗 智能导航链接:自动适配不同环境的导航系统
图2:v2.0 版本主界面,展示三栏布局和模块化架构
模块化架构重构
架构设计理念
v2.0 版本最重要的更新是进行了全面的模块化架构重构。原有的 3000+ 行单体代码被拆分为多个独立的模块,每个模块职责明确,便于维护和扩展。
架构设计原则:
- 单一职责原则:每个模块只负责一个明确的功能
- 依赖注入:通过参数传递依赖,避免全局变量
- 接口隔离:模块间通过明确的接口进行通信
- 开闭原则:对扩展开放,对修改关闭
模块结构
项目采用 ES6 模块化设计,将功能拆分为以下模块:
工具类模块 (utils/)
Algorithms.js - 路径计算算法
calculatePath(p1, p2): Bresenham 直线算法calculateAllDiagonalPaths(gridData, colorMap): 对角线路径计算
Helpers.js - 通用辅助函数
generateMapId(nextId): 生成地图IDhexToRgb(hex): 十六进制转RGBrgbToString(rgb): RGB数组转字符串coordToKey(row, col): 坐标转键deepClone(obj): 深拷贝throttle(func, delay): 节流函数debounce(func, delay): 防抖函数
Storage.js - 数据持久化
saveMapData(mapName, mapData): 保存地图数据loadMapData(mapName): 加载地图数据saveProgress(mapName, progressState): 保存进度loadProgress(mapName): 加载进度- 完整的 localStorage 封装
History.js - 编辑历史管理
add(gridData, colorMap): 添加历史记录undo(): 撤销redo(): 重做- 支持最多 50 步历史记录
特效模块 (effects/)
ParticleSystem.js - 粒子背景系统
- 动态粒子背景效果
- 鼠标交互支持
- 自动适配窗口大小
graph LR
Main["main.js<br/>应用启动与协调"] --> Alg["Algorithms.js<br/>路径生成"]
Main --> Help["Helpers.js<br/>工具函数"]
Main --> Stor["Storage.js<br/>localStorage"]
Main --> Hist["History.js<br/>50步撤销"]
Main --> PS["ParticleSystem.js<br/>粒子背景"]
Hist --> Stor
Alg --> Help
架构优势
模块化架构带来的优势:
- 可维护性提升
- 代码结构清晰,易于理解
- 每个模块职责明确,修改影响范围小
- 便于代码审查和调试
- 可扩展性增强
- 新功能可以独立模块形式添加
- 不影响现有功能
- 支持插件化扩展
- 可测试性改善
- 每个模块可以独立测试
- 便于单元测试和集成测试
- 降低测试复杂度
- 团队协作优化
- 不同开发者可以并行开发不同模块
- 减少代码冲突
- 提高开发效率
三栏布局设计
布局优化
v2.0 版本将原有的两栏布局升级为三栏布局,解决了右侧悬浮控制面板可能遮挡内容的问题。
三栏布局结构:
- 左侧栏:地图列表(320px)
- 中间栏:主网格区域(自适应,1fr)
- 右侧栏:控制面板(280px)
布局特点:
- 使用 CSS Grid 布局,响应式设计
- 三栏等间距,视觉平衡
- 支持不同屏幕尺寸的自适应调整
响应式适配
不同屏幕尺寸的布局调整:
- 大屏幕(>1400px):完整三栏布局
320px 1fr 280px - 中等屏幕(1200px-1400px):调整列宽
280px 1fr 260px - 小屏幕(968px-1200px):进一步缩小
260px 1fr 240px - 移动端(<968px):单栏布局(堆叠显示)
graph LR
Large["> 1400px<br/>320px 1fr 280px"] --> Medium["1200-1400px<br/>280px 1fr 260px"]
Medium --> Small["968-1200px<br/>260px 1fr 240px"]
Small --> Mobile["< 968px<br/>单栏堆叠"]
侧边栏显示/隐藏功能
专注模式
v2.0 版本新增了侧边栏显示/隐藏功能,让用户可以根据需要隐藏左右侧边栏,专注于当前任务。
功能特点:
- 一键切换:点击主网格区域边缘的切换按钮即可显示/隐藏侧边栏
- 状态记忆:用户的显示/隐藏偏好会自动保存到 localStorage
- 平滑过渡:显示/隐藏有 0.3s 的过渡动画
- 图标反馈:侧边栏隐藏时按钮图标会旋转 180 度
使用场景:
- 编辑大型地图时,隐藏侧边栏获得更多工作空间
- 查看地图细节时,隐藏控制面板减少干扰
- 专注编织时,隐藏地图列表专注于当前地图
智能视图放大
当两侧边栏都隐藏时,中间视图会自动放大:
- 内容区域扩大:最大宽度从 1400px 增加到 1800px
- 内边距增加:主网格区域内边距从 2rem 增加到 2.5rem
- 画布优化:画布能够充分利用可用空间
- 平滑过渡:宽度变化有平滑的过渡动画
悬浮Mini菜单
可拖动快捷菜单
当右侧栏隐藏时,会自动显示一个悬浮的 mini 菜单,保留所有关键功能。
功能特点:
- 可拖动:点击标题栏可以拖动到任意位置
- 位置记忆:拖动位置保存到 localStorage
- 展开/收起:可以折叠/展开菜单内容
- 功能完整:包含所有关键操作按钮
- 状态同步:与主控制面板状态实时同步
Mini菜单包含的功能:
浏览模式:
- 进入对角预设模式
- 上一条/下一条导航
- 保存/加载/重置进度
- 进度条显示
编辑模式:
- 撤销/重做
- 保存地图
- 当前颜色预览
拖动功能
拖动特性:
- 鼠标拖动:支持鼠标点击拖动
- 触摸拖动:支持移动设备触摸拖动
- 边界限制:自动限制在视口内
- 平滑移动:拖动过程流畅自然
智能导航系统
导航链接修复
v2.0 版本添加了智能导航链接系统,确保在不同环境下都能正确跳转。
智能路径检测:
- GitHub Pages 环境:使用绝对路径(
/、/blog等) - 本地文件环境:使用相对路径(
../../等) - 其他环境:自动检测并设置合适的路径
导航链接:
- 首页:返回站点主页
- 博客:跳转到博客列表
- 简历:查看个人简历
- 关于:关于页面
- 应用:返回应用列表
技术实现细节
模块化实现
ES6 模块化:
// 导入工具类
import { Algorithms } from './utils/Algorithms.js';
import { Helpers } from './utils/Helpers.js';
import { Storage } from './utils/Storage.js';
import { History } from './utils/History.js';
// 导入特效
import { ParticleSystem } from './effects/ParticleSystem.js';
模块导出:
// 导出工具类供其他模块使用
window.PixelKnit = {
Algorithms,
Helpers,
Storage,
History
};
状态管理
localStorage 状态保存:
- 侧边栏显示/隐藏状态
- Mini菜单位置
- 用户地图列表
- 编织进度
- 下一个地图ID
性能优化
保持的性能优化:
- 离屏Canvas缓存
- 事件节流
- DOM元素缓存
- 批量更新操作
用户体验改进
视觉优化
三栏布局:
- 更好的空间利用
- 减少内容遮挡
- 视觉平衡
侧边栏切换:
- 平滑的过渡动画
- 清晰的视觉反馈
- 直观的操作方式
Mini菜单:
- 紧凑的设计
- 玻璃态效果
- 渐变按钮
交互优化
专注模式:
- 一键隐藏侧边栏
- 自动扩大工作区域
- 状态自动保存
Mini菜单:
- 可拖动到任意位置
- 展开/收起功能
- 功能完整保留
版本对比
v1.1 vs v2.0
| 特性 | v1.1 | v2.0 |
|---|---|---|
| 代码结构 | 单体应用(3000+行) | 模块化架构(多文件) |
| 布局设计 | 两栏布局 | 三栏布局 |
| 侧边栏 | 固定显示 | 可显示/隐藏 |
| Mini菜单 | 无 | 悬浮可拖动 |
| 视图放大 | 无 | 自动放大 |
| 导航链接 | 固定路径 | 智能适配 |
| 可维护性 | 中等 | 高 |
| 可扩展性 | 中等 | 高 |
未来规划
计划中的功能
- 完整模块化迁移
- 将所有功能迁移到模块化结构
- 实现核心模块和UI组件
- 完善模块间通信
- 构建系统
- 引入 Webpack 或 Vite
- 代码分割和懒加载
- 生产环境优化
- 类型系统
- 考虑引入 TypeScript
- 类型安全和代码提示
- 更好的开发体验
- 测试覆盖
- 单元测试
- 集成测试
- 端到端测试
- 性能优化
- 进一步优化渲染性能
- 减少内存占用
- 提升加载速度
使用指南
侧边栏显示/隐藏
- 隐藏左侧栏:点击主网格区域左上角的
◀按钮 - 隐藏右侧栏:点击主网格区域右上角的
▶按钮 - 显示侧边栏:再次点击对应按钮即可显示
- 状态记忆:显示/隐藏偏好会自动保存
Mini菜单使用
- 拖动菜单:点击并拖动标题栏(”快捷操作”区域)
- 展开/收起:点击标题栏右侧的
▼按钮 - 使用功能:点击 mini 菜单中的按钮,功能与原始按钮相同
- 位置记忆:拖动位置会自动保存
专注模式
- 隐藏两侧边栏:分别点击左右切换按钮
- 自动放大:中间视图会自动扩大
- 恢复布局:再次点击切换按钮恢复
技术栈
v2.0 版本技术栈:
- 前端: HTML5, CSS3, JavaScript (ES6+)
- 模块化: ES6 Modules
- Canvas API: 用于网格渲染和交互
- localStorage: 客户端数据持久化
- Bresenham 算法: 直线路径计算
- CSS Grid: 三栏布局系统
- CSS Transitions: 平滑动画效果
项目信息
项目地址:GitHub Repository
技术栈:HTML5, CSS3, JavaScript (ES6+), ES6 Modules, Canvas API, localStorage
相关文章:
总结
像素织梦 (PixelKnit) v2.0 是一次全面的架构重构和用户体验升级。通过模块化架构,我们为应用的长期发展奠定了坚实的基础;通过三栏布局和侧边栏显示/隐藏功能,我们提升了用户的工作效率;通过悬浮mini菜单,我们确保了功能的完整性和便捷性。
这次更新不仅提升了代码质量,更重要的是改善了用户体验。我们相信,这些改进将让 PixelKnit 成为一个更加专业、易用的编织引导应用。
感谢使用像素织梦 (PixelKnit)!祝编织愉快!🧶✨
更新日期:2025-12-03
版本:v2.0.0
主要更新:
- ✅ 模块化架构重构
- ✅ 三栏布局设计
- ✅ 侧边栏显示/隐藏
- ✅ 悬浮mini菜单
- ✅ 智能视图放大
- ✅ 智能导航链接