在首页、个人中心和分类查找页面都落地之后,我感觉整个图书管理系统还缺一块核心——图书详情页。每当用户点击一本书,期待看到完善的封面、简介、推荐、评论和底部操作按钮,然而之前的实现只是一个简单的 Toast 提示,显然远远不够。于是,我决定借助 CodeBuddy,快速搭建一个真正的图书详情页,并且彻底改善项目结构:把 JS 和 SCSS 从 Vue 文件中剥离,保证后续维护更便捷。
1. 任务拆解:从“无”到“有”再到“优雅分离”
首先,我在项目根目录的 pages
下搜索了一下,确认并不存在 book-detail
相关目录。紧接着,和 CodeBuddy 一起制定了三步走策略:
- 在
pages/book-detail/
下创建book-detail.vue
、book-detail.js
和book-detail.scss
三个文件; - 在
pages.json
中注册新路由,并把前三个页面(首页、分类、个人中心)的跳转方法都修改为真正跳转到/pages/book-detail/book-detail
; - 把原先写在 Vue 文件里的所有逻辑和样式彻底分离到独立文件,Vue 里只负责引入。
这一步一进,就像给房子做扩建,先搭骨架,再添装修。
2. “看见”跳转:修改前端路由与方法
分类页(category.vue
)早已调用了 uni.navigateTo({ url: '/pages/book-detail/book-detail?id=' + book.id })
,无需改动;不过首页与个人中心中,我原本只用了 uni.showToast
提示。这次必须改成导航跳转。CodeBuddy 很快给出精确的替换脚本,把:
替换为:
完成后,无论在哪个页面点击书籍,都能一键进入详情,连体验都变得畅快了。
3. 分离逻辑:book-detail.js
的神奇之处
在 book-detail.js
中,CodeBuddy 为我写好了数据拉取、参数解析、生命周期方法、交互事件等一整套逻辑。比如 onLoad
时自动读取 options.id
,去请求接口或模拟数据;还包括“加入书架”“立即购买”“阅读进度”等按钮方法的 stub。相较于之前把逻辑全写在 里,这样看着更清晰,后期想增删功能也只要改这一个文件。
4. 样式模块化:book-detail.scss
的分层设计
而在样式方面,CodeBuddy 建议我用 SCSS 变量和嵌套写法,于是我在 book-detail.scss
中定义了主题色、卡片阴影、响应式布局、玻璃拟态背景等样式模块。比如:
分离后,查看样式更直观,也不用担心 Vue 单文件里那堆行内样式混成一团。
5. Vue 文件:简洁引入与灵活扩展
最终的 book-detail.vue
看起来十分简洁:
一目了然:模板、逻辑、样式各司其职。当我要新增一个功能,比如“相关推荐”,只需去 JS 或 SCSS 文件里加一两行代码,然后在模板补一个
组件即可,开发效率凸显。
6. 小插曲:Windows 下的目录创建
值得一提的是,在创建 static/book-covers/
和 static/avatars/
目录时,Windows 下的 mkdir -p
并不适用,我一时卡在命令行,结果 CodeBuddy 提醒我用 New-Item -ItemType Directory -Path … -Force
。这样的小贴士,让我在非 Unix 系统中也能畅通无阻。
7. 关联测试:打通全链路
到这里,pages.json 里已新增:
我分别从首页、分类页、个人页中点击跳转,依次进入详情页,查看封面、简介、操作按钮是否生效。页面一加载,顶部导航、书名、作者、评分、简介等信息都正确展示,底部“加入书架”“开始阅读”按钮也能正确响应。
8. 后记:分离与可维护的力量
整个过程体验下来,分离 JS 和 CSS 真是一件让人会回味的事:不再在 Vue 单文件里左右滑动查找逻辑和样式,后期也更容易做样式主题切换和逻辑重构。CodeBuddy 不仅把代码写出来,还把工程理念一并带到我的项目中。
至此,我的图书管理系统拥有了完整的详情页,首页、分类页、个人中心页与之无缝衔接,每个页面都保持了相同的未来感与拟态风格。我可以期待下一步,把真实的后端数据、评论系统、社交分享等功能接入,让这个系统更具生命力。
暂无评论内容