我与 CodeBuddy 携手打造 FontFlow 字体预览工坊
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
写在前面
有时候,一个想法萌生的瞬间,就是一次探索的开始。那天我脑中突然闪过一个念头:能不能做一个在线字体预览工具? 它可以导入 Google Fonts、本地字体文件,自由输入文字并实时预览,还能调整字距、字重、行高、字号,甚至收藏喜欢的字体组合并导出配置。界面上嘛,最好是极简暗色系、带点现代感的卡片布局。于是我把这个想法一口气抛给了 CodeBuddy。
我发给它的 prompt 是这样的:
我要用 Vue3 + WebFontLoader 制作一个字体预览工具 FontFlow,支持:
- 在线导入 Google Fonts 和本地字体文件;
- 实时输入文字并应用字体;
- 支持字体大小、行高、字重、字距调整;
- UI 设计采用高亮展示 + 极简暗色布局,使用多列卡片展示预览效果;
- 支持收藏字体组合、导出样式配置;
- 不用使用脚手架,手动帮我创建相应文件,帮我设计并完善上述功能。
我本以为它会先回几个建议,结果它一句废话没说,直接开干。
从零搭建项目结构
CodeBuddy 没有用 Vue CLI 或 Vite 初始化项目,而是完全手动起步。它先创建了一个干净的 index.html
文件,引用了 CDN 版本的 Vue3,并加上了一些 SEO 和响应式的 meta 标签。然后,它又紧接着为我创建了 main.js
和 App.js
文件,作为入口和主组件。
我注意到 App.js 不是传统的 .vue
文件,而是标准的 JavaScript 模块形式,CodeBuddy 还贴心地解释说是为了兼容不使用构建工具的场景。
接着,它为我创建了三个组件文件夹:FontPreview.js
用于实时显示文字和字体效果;ControlPanel.js
提供字体调整选项,比如大小、行高、字距等;FavoritesList.js
用于展示用户收藏的字体组合。这一切都逻辑清晰、结构合理。
此外,它还新建了两个工具目录:一个是 fontLoader.js
,封装了 WebFontLoader 的使用逻辑;另一个是 exportUtils.js
,实现了将字体配置导出为 JSON 的功能。这个模块划分真是让我眼前一亮。
打造极简暗色 UI
除了功能实现,CodeBuddy 对样式也毫不含糊。它新建了 styles/main.css
和 styles/app-layout.css
两个样式文件。
主样式负责定义整体暗色风格,设置了一套带灰调的背景、文字颜色和按钮高亮效果,甚至通过 CSS 变量控制主题色,让后续扩展变得更灵活。而 app-layout.css
则负责布局,使用了 CSS Grid 和 Flex 实现响应式的多列卡片排列,并且统一了组件之间的间距和容器最大宽度。
UI 效果干净利落,非常适合字体类工具的展示需求。
实现字体加载和交互逻辑
我很喜欢 CodeBuddy 在逻辑上的精细设计。例如它在 fontLoader.js
中封装了一个 loadFont(fontFamily)
函数,用 WebFontLoader 异步加载 Google Fonts,并在加载完成后动态更新字体样式。这样做的好处是,页面初始加载不拖慢,而且用户点击字体时能立刻应用效果。
在 ControlPanel.js
中,它没有简单地用几个 input,而是用了 Vue 的数据响应式绑定机制,实现字体大小、行高、字重等参数的动态调整。而且每个控制项都带有 label、范围说明、单位,非常注重用户体验。
收藏功能也做得非常完整。用户点“♥”图标即可收藏当前字体配置,CodeBuddy 用 localStorage 实现了持久保存,并在 FavoritesList.js
中动态渲染所有收藏记录,支持点击一键恢复配置。
构建完整 Vue 项目结构
虽然最初我们是“裸奔”运行的 HTML+JS 模式,但后来我提到想让它转为标准 Vue 项目结构,CodeBuddy 立刻响应,把所有代码整理进了一个完整的 Vite + Vue3 项目中。
它为我自动生成了:
package.json
,包含 Vue、WebFontLoader、Vite 等依赖;vite.config.js
,设定了基本构建逻辑;.gitignore
和.eslintrc.js
,方便后续开发和版本控制;src
目录结构,把组件、工具、样式等文件统一迁移整理;public
目录,准备放置 favicon 和字体文件。
我完全没有手动去敲一行命令,一切都由它自动完成,而且还给我展示了更新后的目录树。
收尾与总结
最终,我在浏览器中打开了网站,输入了一段文字,点击切换字体,调整了字距、字重和行高,页面实时渲染出新的效果。选中喜欢的组合后点个 ♥,它就保存在收藏夹里。再点击导出按钮,我得到了一个 JSON 文件,里面包含了所有字体配置参数。
整个体验顺滑流畅,从交互到外观都达到了我心目中的预期。更让我惊讶的是,这些功能并不是我一项项提出来让它实现,而是我一开始抛出一个目标,它就自己一步步为我搭好了完整系统。
致谢 CodeBuddy:你太会写代码了!
和 CodeBuddy 搭建 FontFlow 的过程让我非常惊喜。它的代码不仅功能完整,而且结构清晰、逻辑严谨。尤其是在组件拆分、样式规划和工具函数封装方面,完全不输专业前端开发者的手工项目。
更难能可贵的是,它做事情从不拖泥带水。给它一个目标,它就能有条不紊地一步步完成,而且每一步都会解释原因、提前规划结构、更新目录,让我全程感到安心、可靠。
我想说,CodeBuddy 不仅是我的编码助手,更像是一个值得信赖的前端拍档。FontFlow 的开发也许只是个开始,未来我还会继续和它一起探索更多创意项目。