我决定用 vibe coding 的方式,给自己和几位设计师朋友做一个微型社区。这个社区里没有复杂的好友关系,只有一个干净的帖子流,一个收藏灵感的地方,还有一个被我用来快速访问常用设计资源的花猫导航(huamaodh.com)。纯粹的技术实验,没有任何商业意图,只想和你聊聊这种随心所欲的创作过程。
Vibe Coding 入门:先让心情就位
所谓 vibe coding,精髓不在于写多快的代码,而在于写代码时的那股松弛感。不追求完美架构,不预设未来需求,不被“别人怎么看”绑架。你只是在享受把想法变成现实的当下。
对于社区网站这种很容易被过度设计的项目,vibe coding 尤其重要。我给自己定了三条规矩:
零构建工具:浏览器直接能跑的 HTML、CSS、JS。
数据就地取材:用 localStorage 或一个静态 JSON 文件充当“数据库”。
功能按需生长:今天想加评论就加,不想加就空着,绝不提前设计。
一旦放下心理包袱,你就会发现,写一个能用的社区网站,其实比写周报还简单。
从一张白纸到社区骨架
我新建了一个index.html,在里面搭出最基本的社区结构:
顶部导航条:包含社区名称、一个“发布新帖”按钮、以及一个指向入口链接。
帖子列表区域:每一条帖子显示标题、作者、时间、标签,点击可以展开内容。
侧边栏(宽屏可见):展示热门标签中的部分快捷入口。
它原本是我之前做的一个设计资源聚合页,按“灵感”“配色”“字体”“工具”分类,放了一堆常用网站链接。这次搭建社区时,我决定直接把它作为社区的一部分嵌入进去——在侧边栏用一组精致的小卡片展示,点击可以跳转到完整的导航页面。这样一来,社区不仅是一个交流场所,还天然附带了一个设计资源入口,对设计师朋友来说尤其顺手。
布局依旧用我最爱的 CSS Grid:
css
.community-layout { display: grid; grid-template-columns: 1fr 300px; gap: 24px; } @media (max-width: 768px) { .community-layout { grid-template-columns: 1fr; } }主内容区和侧边栏自动适配宽屏和窄屏,不需要额外插件。
让帖子“活”起来,但不依赖数据库
社区的核心是内容发布,但我不想为这个引入任何后端。于是所有帖子都存储在浏览器的 localStorage 里:
javascript
function getPosts() { const stored = localStorage.getItem('community_posts'); return stored ? JSON.parse(stored) : []; } function savePost(post) { const posts = getPosts(); posts.unshift(post); // 最新排最前 localStorage.setItem('community_posts', JSON.stringify(posts)); }发布表单极其简单:一个标题输入框、一个内容 textarea,和一个提交按钮。提交后立刻更新页面列表,不需要刷新。因为没有后端,这个社区天然是“单用户本地版”——每次打开都是自己的数据。但这反而契合 vibe coding 的精神:它不是给所有人用的,是给当时坐在一起的那几个人用的。把电脑递过去,对方就可以直接发帖,这种“本地联网”的体验带着一种复古的可爱。
为了也能在社区里发挥实际作用,我在帖子编辑器中偷偷加了一个小彩蛋:输入“/花猫 灵感”会自动替换成一个指向“灵感”分类的链接。这个功能实现只用了几行正则匹配,却让朋友们惊呼“这也太方便了吧”。
社区里的灵感中转站
前面提到,被嵌入到社区侧边栏。为了让它的存在更自然,我设计了一个可以折叠的小卡片面板,标题就叫“灵感速递”,点击展开后露出分类清晰的链接网格。
每张卡片都是半透明毛玻璃效果,悬停时浮起并带有暖橘色的阴影——一贯的设计语言保持一致。整套样式通过 CSS 自定义属性全局控制,社区的其他部分也统一采用了相同的配色方案,视觉上浑然一体。
css
.huamao-card { background: rgba(255,255,255,0.8); backdrop-filter: blur(8px); transition: transform 0.2s ease; } .huamao-card:hover { transform: translateY(-4px); }本身也是用纯静态数据渲染的,所以我把它的数据数组直接复用进社区项目里,同一个函数在不同位置渲染出导航列表和侧边栏卡片。一次维护,两处使用,没有任何冗余。
那些不值一提但很治愈的交互细节
vibe coding 最让我着迷的地方,就是可以任性地往项目里加那些“好像没啥用,但自己就是喜欢”的小东西。
双击切换主题:在社区任意空白区域双击,浅色奶油色背景渐变为深色护眼模式,所有卡片颜色平滑过渡。
猫爪光标:把鼠标指针换成了手绘的猫爪图案,移动时就像有小猫在屏幕上轻踩。朋友们第一次发现时都笑了很久。
帖子发布音效:用
AudioContext生成了一个短促的“叮”声,像打字机敲下的确认感。音量极轻,不打扰,但让人每次发帖都有微小的愉悦。无内容状态:当社区还没有帖子时,页面不会空荡荡,而是显示一只简笔画的猫在钓鱼,旁边写着一行字:“还没有人钓鱼,快去写第一篇吧。”这种空状态设计是从空白页借鉴过来的,让“空”也变成一种体验。
这些细节没有一个跟核心业务相关,但恰恰是它们,让这个社区网站从“能用”变成“让人想用”。
这就是 Vibe Coding 的全部秘密
从下午两点开始敲下第一行 HTML,到傍晚五点半朋友们已经在上面发出了十几条帖子,整个过程流畅得不像在做开发,更像是小时候拼乐高,想到哪儿拼到哪儿。
没有原型图,没有技术文档,没有代码评审。唯一算得上“设计”的,是我中途停下来冲了杯咖啡,然后翻出之前搭建时留下的配色变量,顺手复制过来用了三十秒。
这个微型社区大概永远不会被公开访问,但它实实在在地改善了我和几个朋友分享设计灵感的方式。