省流
Horizon-Hop
Horizon-Hop,把浏览器变成你的轻量效率工作台。
这次重构之后,它已经围绕二维码、JSON、图片压缩、变量命名、表格结构整理、书签搜索、更新日志等能力完成了一轮比较大的收束和重建。
如果你也在做浏览器插件,或者也对“把高频小工具重新放回浏览器里”这件事感兴趣,欢迎交流。
- Chrome Web Store: chromewebstore.google.com/detail/hori…
- GitHub: github.com/LinHanlove/… 插件使用视频: www.youtube.com/watch?v=Tj6…
我以前做浏览器插件,有一个很典型的问题:
想到一个功能,就加一个。
一开始会觉得很爽。
JSON 格式化可以加。
图片压缩也挺常用。
二维码生成好像也值得做。
变量命名、书签搜索、侧边栏、功能面板……感觉都能塞进去。
结果做着做着,插件确实“功能越来越多”了,但另一个问题也越来越明显:
它开始变得越来越不像一个产品。
popup 很挤,入口很多,页面风格也不统一。
有的地方像临时工具,有的地方像后台页面,有的地方又像半成品 demo。
继续加功能当然还能加,但我已经能明显感觉到:
这个方向再走下去,它不会越来越好,只会越来越乱。
所以这次,我没有继续补功能,而是狠狠干了一次重构。
重构完以后,我第一次觉得:
这个插件终于不是“功能堆起来了”,而是真的变成了一个可以长期维护的工具。
最先失控的,其实是 popup
很多浏览器插件都会犯一个毛病:
把 popup 当成万能容器。
但 popup 其实天生不适合承载太多东西。
它适合做的是:
- 轻入口
- 快动作
- 短路径跳转
- 一眼能看懂的核心信息
但我之前的版本里,popup 里塞了太多本不该由它承载的内容:
- 搜索
- 各种快捷方式
- 功能切换
- 设置入口
- 零散操作
- 不同阶段留下来的历史逻辑
你打开它的时候,虽然“什么都能点”,但很难说清它到底是个什么页面。
这是最危险的状态。
因为一个页面一旦角色不清晰,后面每加一个新功能,都是在继续放大混乱。
我终于承认了一件事:不是所有功能都值得留着
这次重构里,我做的第一件事不是优化,而是删。
因为我慢慢发现:
很多时候,产品变差,不是因为做得不够多,而是因为舍不得砍。
比如这次,我把一些已经不适合当前方向的内容直接下掉了。
1. 旧搜索逻辑,不再继续当首页主叙事
之前首页里有一套搜索相关的逻辑,但它已经和现在这个插件不匹配了。
我不想让 Horizon-Hop 继续长成一个“什么都搜一下”的东西。
那种产品最后通常会变成:
- 入口越来越多
- 功能边界越来越模糊
- 用户记不住你到底擅长什么
- 自己也越来越难维护
所以我直接把首页重做了。
现在的首页只做两件事:
- 展示当前网页二维码
- 提供真正高频的快捷入口
它终于变回了一个“打开就能用”的首页,而不是一个拥挤的中控台。
2. 侧边栏工资计算,我也下掉了
这个决定其实挺典型。
不是说这个功能完全没价值,而是它不适合继续留在这一版里。
因为它会把侧边栏继续带向“想到什么塞什么”的路径。
所以这次我直接把侧边栏收成了一个更轻的内容页,只保留每日一句。
听起来像是在“减配”,但我自己反而更喜欢现在这个状态。
因为它终于不吵了。
我把 popup 重构成了真正的首页
这次我对 popup 做的最关键的调整,是重新定义它的角色。
我不再把它当成一个微型后台,而是把它当成:
浏览器里最轻的那个起点。
现在的 popup 会默认展示当前网页二维码,同时保留最直接的几个动作:
- 实时修改二维码内容
- 一键恢复当前网页地址
- 下载二维码
- 跳转二维码工坊
- 唤起功能面板
- 打开书签搜索
- 打开侧边栏
- 查看更新日志
这样调整之后,整个体感完全不一样了。
以前是“功能很多,但很挤”。
现在是“动作很少,但都很顺手”。
我越来越觉得,popup 这种地方最重要的不是做满,而是:
让用户每次点开都知道该干嘛。
这次我最满意的,是把二维码真正做成了一条完整链路
这轮重构里,我最满意的新能力之一,是 二维码工坊。
以前二维码只是一个附带小功能。
现在我把它完整地拉成了一个独立能力页。
因为我发现,二维码这个场景其实很典型:
你并不只是“想生成一个二维码”,而是经常还会需要:
- 改内容
- 调样式
- 存多个方案
- 做海报
- 反复回看历史版本
- 下载不同结果
所以我干脆把这条链路完整补齐了:
- 当前网页 / 任意文本生成二维码
- 自定义尺寸、边距、颜色、容错级别
- 海报预览
- 海报标题和描述设置
- 历史记录保存
- 单条删除
- 全部清空
- 点击历史方案快速恢复
- 下载二维码和海报
这一步对我来说很重要。
因为它意味着 Horizon-Hop 终于开始出现“不是凑出来的页面”,而是真正有完整体验的能力。
真正让我松一口气的,是我终于开始“做系统”了
以前每做一个工具页,基本都是:
- 这个页面单独想一下结构
- 那个页面单独决定头部长什么样
- 再单独调一次间距、阴影、层级
- 最后每一页都能看,但放在一起完全不是一家人
这次我专门抽了一个统一骨架组件:TabPageShell。
听起来很普通,但它帮我解决了一个很关键的问题:
以后加新页面,我是在“长系统”,而不是“继续拼页面”。
我把这些东西统一了起来:
- 页面背景氛围
- 顶部头部布局
- 标题和说明区
- 右上角状态信息区
- 底部快捷入口
- 页面宽度和布局密度
然后让这些工具页逐步接进这套骨架:
JsonFormatter
TableMarkdownQrStudio
ReleaseNotes
这之后最直观的变化是:
从用户视角看
这些页面终于像同一个产品里的页面了。
从开发者视角看
我以后再做新功能,不用每次重新发明一次页面结构。
这件事特别关键。
因为很多个人项目不是死在“功能做不出来”,而是死在“每次迭代都要重新做一遍基础决策”。
我还补了一件以前一直没认真做的事:更新日志
以前插件版本号也会变,但对用户来说感知其实很弱。
这次我专门做了一个独立的 Release Notes 页面,并加上了插件升级后自动打开的逻辑。
这件事不大,但我觉得它很值。
因为当你真的想长期维护一个产品时,版本更新就不应该只是开发者自己知道的事情。
它应该被认真告诉用户:
- 这版改了什么
- 为什么改
- 新增了哪些能力
- 又拿掉了哪些旧东西
这也是我这次重构里一个挺强烈的感受:
当你开始认真写更新日志的时候,说明你已经不再只是在写功能了。
你开始在做产品。
这次重构让我真正想明白了一件事
一个插件能不能长期维护,关键根本不是功能数量。
而是这三件事:
1. 你有没有能力做减法
不是每个想法都要上线。
不是每个旧功能都必须保留。
不是“做得更多”就一定更好。
2. 你有没有统一结构
如果每个页面都各长各的、各写各的,那后面功能越多,维护成本只会指数上升。
3. 你有没有产品边界
你得知道:
- popup 应该干什么
- 工具页应该长什么样
- 哪些能力值得独立存在
- 哪些功能只是阶段性产物
这些东西想不清楚,代码写得再快,项目也会越来越散。
现在的 Horizon-Hop,终于更像一个“能继续做下去”的东西了
重构之后,我对它的感觉明显不一样了。
它不再是那个“我又加了几个功能”的插件了。
它开始有了更明确的结构:
- 首页是轻入口
- 工具页是独立工作台
- 二维码成为更完整的核心能力
- 页面视觉开始统一
- 更新日志开始沉淀
- 侧边栏重新收敛
- 整个项目也更适合继续往后迭代
说实话,它离“成熟产品”还差得远。
但至少这次以后,我第一次觉得:
它终于长出了能长期维护的骨架。
而这件事,比单纯再多做两个功能更让我开心。
最后
如果你也在做自己的插件、工具站或者个人产品,可能也会遇到这个阶段:
一开始总想把更多能力做进去,后来才慢慢明白,真正难的从来不是“继续加”,而是:
- 会不会删
- 敢不敢收
- 能不能统一
- 知不知道自己到底想把它做成什么
重构最有价值的部分,也从来不只是“代码更干净了”。
而是你终于开始有能力回答那个问题:
这个项目,未来到底该往哪里长。