【中秋国庆 VibeCoding】月之书:把一盏灯、一场烟花、一封信,都寄给月亮

中秋国庆VibeCoding

:warning: 警告:别在工作时间打开这个页面。 因为你大概率会滚到底,然后鬼使神差地写一张月亮明信片,发给一个很久没联系的人。

:full_moon: 事情是这样的——我偷了一轮月亮,没花一分钱服务器: 零后端、零音频文件、零第三方素材,把满月、河灯、烟花、邮局,全部塞进一个网页。 你往下滚,是从异乡回团圆的五章书;你点夜空,灯会亮、烟花会炸; 滚到最后一页,还能把这张月亮变成一个链接直接寄出去—— 对方点开,会亲手拆开一枚火漆封缄的信。

从第一行代码到上线,全程只干了一件事:跟 TraeCode 聊天。

:backhand_index_pointing_right: 现在就试(手机电脑都能玩):https://mid-autumn-festival-pi.vercel.app/

:stopwatch: 30 秒录屏,建议开声音,别剧透给自己:

ezgif-397d9bc5f5b5f436


一、我做了什么

一个纯前端的中秋主题滚动叙事互动网页《月之书 · MOON BOOK》。 它不是普通落地页——是一本书,一屏一章,共五章,滚到哪,情绪就到哪:

  • 序 · 月之书 —— 票根式入场仪式,选"带声音进入"还是"安静进入"

  • Chapter I · 异乡 —— 城市天际线下的月夜,一个人和一轮月

  • Chapter II · 归途 —— 160vh 长滚动,流星划过,照亮回家的路线

  • Chapter III · 灯河 —— 轻触夜空,放一盏河灯。暖纸透光 shader,灯光沿轨迹漂向远方;进章还有"三灯迎客"

  • Chapter IV · 月圆 —— 点击夜空,绽放烟花(1400 粒子池),巨型墨字"但愿人长久,千里共婵娟"配朱红"婵娟"印 + 竖排"中秋"印

  • Chapter V · 月亮邮局 —— 选 8 档月相、写留言、署上名字,生成专属明信片:可下载 PNG,也可以直接变成一个链接寄给对方

最"心机"的一个设计:收到明信片链接的人,会看到一段火漆启封动画——像真的拆开一封从月亮寄来的信。

二、灵感来自哪

活动帖里说:“有人想做一张节日贺卡。”

但我觉得中秋的贺卡不该只是一张图——它应该有一段情绪的路径:从一个人的异乡,到想起回家的路,再到抬头看见同一轮月亮。

所以我把"贺卡"做成了一本书:前面四章负责把情绪铺满,第五章的明信片,才是真正"寄出去"的那一下。

它解决的假期问题是:异地亲友之间,中秋祝福不知道怎么说、说了又轻飘飘。 滚完这本书再写的那张明信片,分量会不一样。

三、效果预览

完整录屏见顶部 GIF。几个最值得截图的瞬间:

  • 灯河章:点一下夜空,一盏暖黄的灯从水面亮起、漂远

  • 月圆章:烟花在月盘前方炸开,墨色诗句压满整屏

  • 月亮邮局:选好月相、写下名字,明信片实时生成

  • 收信视角:火漆碎裂、信纸展开的启封动画

:link: 与其看图,不如自己滚一遍:https://mid-autumn-festival-pi.vercel.app/

四、用 TraeCode 创作的过程

整个项目从零到部署,全部在 TraeCode 里完成,几个关键节点:

  1. 架构先行:先让 TraeCode 出章节结构和滚动叙事方案——React 19 + react-three-fiber 搭 3D 舞台,GSAP ScrollTrigger + Lenis 驱动滚动,three 独立分包懒加载,首屏秒开

  2. 灯河章:手写"暖纸透光"shader 迭代了三轮;中途光晕莫名消失,TraeCode 定位到是 pow(负数) 产生 NaN,一行修复

  3. 月圆章:烟花一开始开到月亮后面去了,对话几轮修正到月盘前方 z≈2.6,绽放位置终于"对味"

  4. 月亮邮局:不想为分享功能写后端,最后用 Canvas 绘制 + base64url,把整张明信片塞进一条链接——零后端也能"寄信"

  5. 收尾:WebAudio 全合成音效(一个音频文件都没用)、移动端 DPR/FOV 自适应、Vercel 部署配置,一次对话搞定

生产构建 0 错误,从第一行代码到可分享链接,全程没离开过 TraeCode。

五、最后

月亮我已经偷来了,链接就搁这儿。

今年中秋,别再群发"中秋快乐"—— 打开《月之书》,滚到底,写下 TA 的名字,把这块月亮直接寄过去。 你猜,对方拆完那枚火漆,会回你什么?

体验地址最后再放一次(反正你刚才已经点进来过一遍了):https://mid-autumn-festival-pi.vercel.app/

4 个赞