大家好,我是熊猫钓鱼!欢迎大家和我一起探讨技术。希望您能点赞关注,谢谢!
摘要
国庆前夕,我用华为云码道把一个中秋主题的单文件互动页改造成了国庆献礼网页:零依赖、零构建,1056 行 HTML 承载红金主题场景、八大交互主题(升国旗、切蛋糕、限时知识问答、成就展、红色旅游时间线等)、纯前端祝福贺卡和 Web Audio 现场合成的音乐音效。生成环节 23 分 47 秒完成,但验收环节才是重头戏——本文从代码里实测挖出三个 AI 留下的真 bug:data-key复制粘贴撞名导致"国歌"入口弹出蛋糕面板、国旗默认定位被overflow:hidden舞台裁掉、中秋模板遗留的无样式元素。文章既是单文件 HTML 的实现拆解(clip-path 五角星、CSS 变量孔明灯、连击倍率计分、URL 参数贺卡),也是一次"AI 负责 95% 的代码,人负责找那 5% 的 bug"的结对开发复盘。
目录
- 为什么是"改",不是"写"
从中秋页到国庆页:让 AI 吃透现有代码做彻底变体,附码道真实生成数据(23m47s / 34.5 万 token 输入 / 1056 行产物) - 这个页面长什么样
红金主题视觉、八大主题码头、集章图鉴与全屏烟花机制 - 几个我认为值得说的实现细节
- 3.1 五星红旗不用图片:
clip-path十坐标剪出五角星 - 3.2 孔明灯:SVG + CSS 变量
--dx,每盏灯轨迹不同 - 3.3 问答计分:时间奖励 × 连击倍率,封顶两倍
- 3.4 零后端贺卡:
URLSearchParams拼链接传祝福 - 3.5 Web Audio 现场合成:三角波拨弦与对错音效
- 3.1 五星红旗不用图片:
- AI 写完之后,我的活才刚开始
三个实测 bug 复盘:data-key="yuebing"撞名、被裁掉的国旗、模板尸骸;结论——AI 不会替你点开页面挨个戳 - 写在最后
集齐八枚图鉴、放一场 22 个 CSS 粒子的烟花,给祖国道一句生日快乐
九月最后一个工作日,距离国庆还有一天。我决定给祖国做一份程序员式的生日礼物:一个能玩的国庆主题网页。整个开发交给华为云码道,我负责提需求、挑毛病、修尾巴。这篇文章把整个过程摊开讲——包括 AI 写得漂亮的地方,和它挖给自己跳的坑。
华为云码道,只需要对话就能开发,而且直接可以对接部署到你的atomgit服务器上托管代码,我觉得超神了!
一、引言
我想开发一个页面,为祖国庆生,无奈专业技术不够精通,所以很难做出来。
但是,这种活儿最适合丢给码道。它的优势从来不是"从零写出一个惊艳的东西",而是快速理解意图并生成代码,然后按你的意图做一次彻底的变体。事实也确实如此。
整个生成过程,耗时 23 分 47 秒,输入约 34.5 万 token,输出 2.4 万 token。产物是一个 62KB、1056 行的单文件页面,零依赖、零构建、双击就能跑。
开发对话过程如下:
思考后,它生成结果如下:
全部完成如下:
二、这个页面长什么样
打开页面,是一整片从暗红烧到正红的天空:顶部一轮金色的太阳在缓慢呼吸,三盏红灯笼晃晃悠悠,星星在闪,金色的花瓣往下落。底部是一排"码头",八个入口:国旗、国庆蛋糕、知识问答、成就展、红色旅游、国歌、祝福墙、烟花秀。
每个入口点开是一块独立的面板:国旗面板里能亲手把旗升上旗杆,蛋糕面板一刀切开露出"75"的夹心,问答面板是限时十五秒的十二道国庆知识题,红色旅游是一条从南湖红船铺到天安门的时间线。
八个面板每逛过一个,对应图标会亮起一枚小红点,左上角的"图鉴"计数随之 +1。集满八个,全屏烟花。这种"集章"设计是从中秋版继承来的,但它恰好和国庆的气质合拍——像是把逛展馆变成了游园会。
三、几个我认为值得说的实现细节
单文件 HTML 最怕写成"一坨"。这份代码的整体组织其实相当清爽:一个PANELS对象管内容渲染,一个bind对管事件绑定,key 对 key。点码头时openPanel(key)把模板字符串灌进弹层,再调对应的绑定函数。加一个新主题,就是往两个对象里各加一项,别的什么都不用动。
五星红旗不用图片。旗面是三个div条,五角星靠clip-path一刀剪出来:
.flag-star{width:24px;height:24px;background:#ffd700;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);}十个坐标点,一颗五角星。这是 CSS 里我最喜欢的那种"穷聪明"——不加载任何资源,把形状问题变成几何题。
孔明灯是点击放飞的。页面上任何地方点一下(码头和弹层除外),就有一盏写着"国庆"“爱国”“富强”"中国梦"的灯从点击处升起来。每盏灯是一个内联 SVG,灯身上的字直接用楷体<text>画上去;横向飘移量塞进 CSS 变量--dx,动画关键帧里引用它,于是每一盏灯的飞行轨迹都不一样。
问答的计分有个小设计。得分不是答对就给固定分,而是:
constbonus=Math.round(S.time)*8,mult=1+Math.min(S.combo,9)*0.1,gain=Math.round((100+bonus)*mult);答得越快,剩余时间的奖励越多;连击越多,倍率越高,封顶两倍。限时 fifteen 秒的紧迫感加上连击倍率的诱惑,十二道题答下来是有点上头的。答完按分数给你封"爱国学员"到"爱国达人"的头衔,还能生成一条带战绩的分享链接。
贺卡功能没有后端。写一句祝福、填上收卡人和署名,页面把它拼进 URL 参数,生成一条链接——对方打开,横幅里弹出"你收到一张国庆祝福"。所有状态都在URLSearchParams里来回,一行服务端代码都不需要。
音乐是现场合成的。没有 mp3 文件,点"国歌"按钮,Web Audio 的三角波振荡器按一段音阶随机拨弦,低音铺底,指数衰减包络让每个音都像拨出来的而不是按出来的。答题的对错音效也是同一个路子:三个上行的"叮"和一声短促的锯齿波"哔"。简陋吗?简陋。但它让整个页面保持"一个文件走天下",我认为值。
四、AI 写完之后,我的活才刚开始
这是我更想写的部分。
码道交稿很快,23 分钟。但验收的时候,我在 1056 行里挑出了这么几处:
其一,复制粘贴留下的暗伤。底部码头八个入口,"国歌"那一项的data-key竟然也是"yuebing"——和"国庆蛋糕"撞了。点国歌,弹出来的是蛋糕面板;真正写好的国歌面板guoge躺在代码里,永远没有人能打开它。这是复制条目时忘了改 key,AI 自己没发现,我点了两下就摸到了。
其二,一个被裁掉的国旗。国旗默认定位在bottom: 170px,旗面高 80px,而演示舞台只有 210px 高、还overflow: hidden——于是旗子的上半截永远悬在舞台外面,看起来像只升了一半还缺了一大块。数值在自己脑子里对一遍就能发现,但 AI 没有替自己对。
其三,模板的尸骸。首页有一个"今日一题"的小盒子,从旧版继承来的类名一个都没配上样式,光秃秃地杵在标题下面;knife切蛋糕的动画类、烟花粒子的.spark样式,也有几处只写了 HTML 没写 CSS。不致命,但一眼就能看出"这里以前住过别人"。
这些坑有一个共同点:都不是能力问题,是验收问题。生成式 AI 对"已经写出来的代码"有很强的自信,它不会像人一样点开每个入口挨个戳一遍。所以我的结论很简单:AI 负责把 95% 的代码写完,剩下 5% 的 bug 藏在 95% 的自信里,得由那个真正点开页面的人去找。
修的过程倒是不难——改一个data-key、调一个bottom值、给遗留元素补几行样式或者干脆删掉——前后也就十来分钟。真正花时间的,是我愿意花时间去找。
五、写在最后
页面做完的那个晚上,我把它打开,点了一下夜空。一盏写着"国庆"的灯慢悠悠地升上去,和屏幕顶上那轮金色的太阳擦肩而过。
我集齐了八枚图鉴,看了一场由 22 个 CSS 粒子组成的烟花。说实话,比起真实的烟花差得远,但它是我一行一行看着长出来的。
七十五年,国家的大事记是两弹一星、是四万五千公里高铁、是神舟和天宫。而我能做的,就是在这些宏大的词旁边,放上一个普通人亲手搭的小页面。
生日快乐,我的国。