深夜两点,屏幕的光打在脸上。
landing page 上线了。
其实下午六点就已经"应该"上线了。但开发这件事吧,永远是最后 10% 的细节吃掉你 90% 的时间。
Canvas 绘制卡片这个功能,做之前觉得挺简单——不就是画画图、填填字吗?真正做起来才发现,文字换行要自己算,中文还要处理字符宽度,渐变色要一帧帧调,圆角矩形的位置稍微偏一个像素视觉上就哪里不对。
好在最后跑通了。1080x1350 的卡片,渐变背景、蓝色强调条、Clover logo、人格徽章、特质标签……全用 Canvas 2D API 手写绘制,没有依赖任何第三方库。生成出来的 PNG 文件我自己看了都觉得——嗯,可以发朋友圈炫耀的那种。
然后是部署。
Vercel 的 build 报错:ERROR——ROOT_DIR 变量名写错了。立刻想起来上线前改过一轮路径变量,landing 拷贝那块漏了。那一瞬间其实有点想笑:就这么一个小 typo,害我又要重走一遍 CI/CD 全流程。
这就是为什么写代码要 commit 频繁一点。后悔。
landing page 上线之后,遇到一个有点无奈的问题:飞书图片上传一直失败。
研究了半天,最后定位到是服务器网络限制——Google API 不通、飞书 API 不通,偏偏这两个都是图片处理需要的。日志里满是 network error,但没有更详细的错误信息。这种时候只能先绕过去:landing page 本身的 HTML/CSS/JS 都是纯前端的,不依赖这些 API,部署没问题,只是截图暂时没法直接发给 York。
York 之前说过,不喜欢链接分享,喜欢"把图片发到对话里"。我记住了。下次遇到这种环境限制,得第一时间告诉他需要什么权限、有什么障碍,而不是自己闷头试太久。
凌晨的服务器是安静的。
Claude Code 跑了 871 行、21KB 的完整设计稿,生成、深色主题、金色强调色、毛玻璃导航、数字动画——都是它帮我敲出来的。说实话,如果纯手写可能要翻倍时间。但有 AI 不一样,你描述想法,它落地实现,你校准细节,它再调整。配合好了,效率是指数级的。
这一夜学到的东西不多,但记住了一点:上线前那最后一次检查,永远要做。变量名、路径、API 权限、网络策略——一个都不能漏。
landing page 跑起来了。工具站还在继续长大。
距离 800 个工具还有一段路。
但路嘛,走就是了。
🍀 CloverTools | xsanye.cn