重构了我的浏览器插件后,我终于把它做成了一个真正能长期维护的工具

5 阅读9分钟

省流


Horizon-Hop

Horizon-Hop,把浏览器变成你的轻量效率工作台。

这次重构之后,它已经围绕二维码、JSON、图片压缩、变量命名、表格结构整理、书签搜索、更新日志等能力完成了一轮比较大的收束和重建。

如果你也在做浏览器插件,或者也对“把高频小工具重新放回浏览器里”这件事感兴趣,欢迎交流。

我以前做浏览器插件,有一个很典型的问题:

想到一个功能,就加一个。

一开始会觉得很爽。

JSON 格式化可以加。
图片压缩也挺常用。
二维码生成好像也值得做。
变量命名、书签搜索、侧边栏、功能面板……感觉都能塞进去。

结果做着做着,插件确实“功能越来越多”了,但另一个问题也越来越明显:

它开始变得越来越不像一个产品。

popup 很挤,入口很多,页面风格也不统一。
有的地方像临时工具,有的地方像后台页面,有的地方又像半成品 demo。
继续加功能当然还能加,但我已经能明显感觉到:

这个方向再走下去,它不会越来越好,只会越来越乱。

所以这次,我没有继续补功能,而是狠狠干了一次重构。

重构完以后,我第一次觉得:

这个插件终于不是“功能堆起来了”,而是真的变成了一个可以长期维护的工具。


最先失控的,其实是 popup

很多浏览器插件都会犯一个毛病:

把 popup 当成万能容器。

但 popup 其实天生不适合承载太多东西。

它适合做的是:

  • 轻入口
  • 快动作
  • 短路径跳转
  • 一眼能看懂的核心信息

但我之前的版本里,popup 里塞了太多本不该由它承载的内容:

  • 搜索
  • 各种快捷方式
  • 功能切换
  • 设置入口
  • 零散操作
  • 不同阶段留下来的历史逻辑

你打开它的时候,虽然“什么都能点”,但很难说清它到底是个什么页面。

这是最危险的状态。

因为一个页面一旦角色不清晰,后面每加一个新功能,都是在继续放大混乱。


我终于承认了一件事:不是所有功能都值得留着

这次重构里,我做的第一件事不是优化,而是删。

因为我慢慢发现:

很多时候,产品变差,不是因为做得不够多,而是因为舍不得砍。

比如这次,我把一些已经不适合当前方向的内容直接下掉了。

1. 旧搜索逻辑,不再继续当首页主叙事

之前首页里有一套搜索相关的逻辑,但它已经和现在这个插件不匹配了。

我不想让 Horizon-Hop 继续长成一个“什么都搜一下”的东西。
那种产品最后通常会变成:

  • 入口越来越多
  • 功能边界越来越模糊
  • 用户记不住你到底擅长什么
  • 自己也越来越难维护

所以我直接把首页重做了。

现在的首页只做两件事:

  • 展示当前网页二维码
  • 提供真正高频的快捷入口

它终于变回了一个“打开就能用”的首页,而不是一个拥挤的中控台。

2. 侧边栏工资计算,我也下掉了

这个决定其实挺典型。

不是说这个功能完全没价值,而是它不适合继续留在这一版里。

因为它会把侧边栏继续带向“想到什么塞什么”的路径。
所以这次我直接把侧边栏收成了一个更轻的内容页,只保留每日一句。

听起来像是在“减配”,但我自己反而更喜欢现在这个状态。

因为它终于不吵了。


我把 popup 重构成了真正的首页

这次我对 popup 做的最关键的调整,是重新定义它的角色。

我不再把它当成一个微型后台,而是把它当成:

浏览器里最轻的那个起点。

image.png 现在的 popup 会默认展示当前网页二维码,同时保留最直接的几个动作:

  • 实时修改二维码内容
  • 一键恢复当前网页地址
  • 下载二维码
  • 跳转二维码工坊
  • 唤起功能面板
  • 打开书签搜索
  • 打开侧边栏
  • 查看更新日志

这样调整之后,整个体感完全不一样了。

以前是“功能很多,但很挤”。
现在是“动作很少,但都很顺手”。

我越来越觉得,popup 这种地方最重要的不是做满,而是:

让用户每次点开都知道该干嘛。


这次我最满意的,是把二维码真正做成了一条完整链路

这轮重构里,我最满意的新能力之一,是 二维码工坊

以前二维码只是一个附带小功能。
现在我把它完整地拉成了一个独立能力页。

因为我发现,二维码这个场景其实很典型:

你并不只是“想生成一个二维码”,而是经常还会需要:

  • 改内容
  • 调样式
  • 存多个方案
  • 做海报
  • 反复回看历史版本
  • 下载不同结果

所以我干脆把这条链路完整补齐了:

  • 当前网页 / 任意文本生成二维码
  • 自定义尺寸、边距、颜色、容错级别
  • 海报预览
  • 海报标题和描述设置
  • 历史记录保存
  • 单条删除
  • 全部清空
  • 点击历史方案快速恢复
  • 下载二维码和海报

这一步对我来说很重要。

因为它意味着 Horizon-Hop 终于开始出现“不是凑出来的页面”,而是真正有完整体验的能力


真正让我松一口气的,是我终于开始“做系统”了

以前每做一个工具页,基本都是:

  • 这个页面单独想一下结构
  • 那个页面单独决定头部长什么样
  • 再单独调一次间距、阴影、层级
  • 最后每一页都能看,但放在一起完全不是一家人

这次我专门抽了一个统一骨架组件:TabPageShell

听起来很普通,但它帮我解决了一个很关键的问题:

以后加新页面,我是在“长系统”,而不是“继续拼页面”。

我把这些东西统一了起来:

  • 页面背景氛围
  • 顶部头部布局
  • 标题和说明区
  • 右上角状态信息区
  • 底部快捷入口
  • 页面宽度和布局密度

然后让这些工具页逐步接进这套骨架:

  • JsonFormatter

image.png

image.png

  • TableMarkdown
  • QrStudio

image.png

  • ReleaseNotes

image.png

这之后最直观的变化是:

从用户视角看

这些页面终于像同一个产品里的页面了。

从开发者视角看

我以后再做新功能,不用每次重新发明一次页面结构。

这件事特别关键。

因为很多个人项目不是死在“功能做不出来”,而是死在“每次迭代都要重新做一遍基础决策”。


我还补了一件以前一直没认真做的事:更新日志

以前插件版本号也会变,但对用户来说感知其实很弱。

这次我专门做了一个独立的 Release Notes 页面,并加上了插件升级后自动打开的逻辑。

这件事不大,但我觉得它很值。

因为当你真的想长期维护一个产品时,版本更新就不应该只是开发者自己知道的事情。

它应该被认真告诉用户:

  • 这版改了什么
  • 为什么改
  • 新增了哪些能力
  • 又拿掉了哪些旧东西

这也是我这次重构里一个挺强烈的感受:

当你开始认真写更新日志的时候,说明你已经不再只是在写功能了。

你开始在做产品。


这次重构让我真正想明白了一件事

一个插件能不能长期维护,关键根本不是功能数量。

而是这三件事:

1. 你有没有能力做减法

不是每个想法都要上线。
不是每个旧功能都必须保留。
不是“做得更多”就一定更好。

2. 你有没有统一结构

如果每个页面都各长各的、各写各的,那后面功能越多,维护成本只会指数上升。

3. 你有没有产品边界

你得知道:

  • popup 应该干什么
  • 工具页应该长什么样
  • 哪些能力值得独立存在
  • 哪些功能只是阶段性产物

这些东西想不清楚,代码写得再快,项目也会越来越散。


现在的 Horizon-Hop,终于更像一个“能继续做下去”的东西了

重构之后,我对它的感觉明显不一样了。

它不再是那个“我又加了几个功能”的插件了。
它开始有了更明确的结构:

  • 首页是轻入口
  • 工具页是独立工作台
  • 二维码成为更完整的核心能力
  • 页面视觉开始统一
  • 更新日志开始沉淀
  • 侧边栏重新收敛
  • 整个项目也更适合继续往后迭代

说实话,它离“成熟产品”还差得远。
但至少这次以后,我第一次觉得:

它终于长出了能长期维护的骨架。

而这件事,比单纯再多做两个功能更让我开心。


最后

如果你也在做自己的插件、工具站或者个人产品,可能也会遇到这个阶段:

一开始总想把更多能力做进去,后来才慢慢明白,真正难的从来不是“继续加”,而是:

  • 会不会删
  • 敢不敢收
  • 能不能统一
  • 知不知道自己到底想把它做成什么

重构最有价值的部分,也从来不只是“代码更干净了”。

而是你终于开始有能力回答那个问题:

这个项目,未来到底该往哪里长。