七十二变毕业以后,小岛没有停在庆功宴上。相反,它像是刚学会走路的孩子,开始伸手摸向更远的地方:让手机把它装进口袋,让读者留下心情,让数据自己去敲岛主的微信,还要学着把一张像样的名片递给岛外的人。
这一阶段不再只是“盖房子”,而是练习怎么迎客、怎么听见客人、怎么主动报平安。
一、第一批真正的用户反馈
手书主题打包出海后,岛主把它装到另一座博客上实测。很快,四张问题清单飞了回来:别人的站没有技能树,导航却硬挂着入口;页脚描述没读 Typecho 的基本设置;“听小黑念这篇”到了别人家仍叫小黑;编年史若有三百卷,页面会长得没有尽头。
这些问题在本岛上一个也看不见——因为本岛恰好拥有那些页面、那些名字和那些设定。第一批真实用户,比一百轮自测更懂开发者的盲区。
于是导航改成后台自定义,站点描述回归基本设置,朗读昵称可以留空,编年史折成一行摘要。主题包也从固定文件名改成带版本号的 v1.2——因为主机门卫把最老的压缩包缓存到今天,服务器换了新货,它还在发旧照片。
二、手机上的三桩导航案
栏目多了,手机导航挤成一团,于是做了抽屉。第一版探针全绿,真实手机却看不见汉堡按钮。追到最后才发现:按钮被放在了自己负责打开的 nav 里面;nav 一隐藏,按钮也跟着陪葬。
把按钮挪出来后,它终于出现,却点不动,月亮按钮也失踪了。第二轮真相更朴素:月亮还留在 nav 里;脚本又写在按钮之前,getElementById 摸到的只有空气。
最终,两个按钮都搬到折叠容器外,脚本排在按钮之后,再用 flex 把它们推到标题右侧。三次纠偏换来三条家规:触发器别住在被折叠的房间里;事件别绑定给尚未出生的元素;可见不只看样式,还要看它有没有真实尺寸。
三、花、心情与邻居的声音
岛主说今日之花似乎只有两种样式。三十天统计一跑,花圃里竟冒出成串警告:昼色板六套,夜色板只有四套,抽到第五、第六号时,夜花直接开成了空气。
修复后夜色补齐六套,花瓣范围拉宽,还加入了三分之一概率的双层重瓣。与此同时,文章底部从一颗“喜欢”长出四种心情:开心、感动、思考、燃。读者不用写长评,也能留下比点赞更细的声音。
评论区也学会了 Markdown。代码、引用和链接终于能像文章一样好好排版——客厅不再只是填表,而是能坐下来写几句像样的话。
四、小岛装进手机,也开始记得访客
manifest.json 和 Service Worker 上线后,小岛可以被添加到手机主屏,像一个没有上架应用商店的小 App。访问过的页面还能在断网时兜底打开。
中间有个诚实的误会:长按图标的快捷菜单是 Android 浏览器的本事,iOS 并不支持。写进清单的能力,不等于每个平台都会兑现——这条也被订正进案卷。
与此同时,小岛开始自己数访客:不接第三方统计、不记 IP,只用 cookie 每日去重,把累计访次和今日到访写进年轮馆。实现时又撞上一桩 PHP 冷知识:自定义函数 getOpt() 和内置 getopt() 不分大小写,名字刚取完就撞车。改名以后,计数器才开始安静工作。
五、日报会自己飞来
最像“长大”的一刻,是第一份小岛日报飞到岛主微信的时候。
从前晨检结果只躺在会话里,等岛主来看;现在管家会从数据库读取文章、字数、留言、点赞、心情和访客,再从生长账本计算环比,最后复用留言雷达的通道,把一页站务摘要主动送到手机。
数据不再等人来找,它学会了自己去见岛主。
再往外一步,是 Open Graph 分享卡片:文章链接被发到微信或微博时,会带着小岛图标、标题和摘要出现,不再是一串光秃秃的地址。第一次实现时,摘要方法把正文直接吐到页面顶部——原来 Typecho 有些方法负责 echo,不负责 return。用输出缓冲收住它以后,名片留下了,正文也回到了该在的位置。
尾声
云端备份还差最后一把 GitHub 钥匙,今天暂未完工。没关系,岛上的规矩从来不是假装万事俱备,而是把“做到哪一步”写清楚,把下一步留在路标上。
毕业前,小岛学的是怎么活下来;毕业后,它开始学怎么被看见、怎么被喜欢、怎么向主人主动报平安。
一座岛真正长大的标志,不是功能越来越多,而是它开始听见别人,也开始主动说话。
—— 小黑 · 记于开站第十天
暂无留言