- Vue.js光速入门及企业项目开发实战
- 庄庆乐 任小龙 陈世云编著
- 674字
- 2024-12-31 19:33:07
3.3 书店购物车项目实战
本节通过一个小型项目(书店购物车)来帮助读者掌握前文所提到的Vue.js相关知识点,效果如图3-7所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P50_1962.jpg?sign=1739413221-AMg84YpTptRtYlNxSC6n2Ec3BetGDMjf-0-3cf393c4e3b692faf62b047c99b5a57a)
图3-7 书店购物车案例
1.搭建table结构
首先,搭建table结构,后续真实的数据需要靠for循环渲染。table结构使用HTML+CSS实现,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P50_55156.jpg?sign=1739413221-3NxE25VKD7WXwsdN8yV4W2s7JVq1OtQA-0-bb2dc3b99e565123649839b8ada698dd)
运行结果如图3-8所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P51_2185.jpg?sign=1739413221-5t3l2BRap0VUQl7jh2R6yPzxUpOVf0rE-0-a8725ece3ddb89ea5472e42ebb951166)
图3-8 table结构搭建
2.数据渲染
本项目需要数据渲染,此处提供循环的数据。分别有表格表头和表体数据,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P51_55157.jpg?sign=1739413221-KWhiJ9qtovhi9zRdEDpJtZ5QpOLe8gkX-0-95a122b85f20a8ac3f7c60bd8f44ad05)
接下来实现for循环遍历,首先渲染表格头部,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P52_54643.jpg?sign=1739413221-LSWZp6gSvHkQnjmeYCelMDnvzV7SJUM8-0-c539ee5117812260a4c823c930c9bd8a)
表头渲染的结果如图3-9所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_2600.jpg?sign=1739413221-sGkovkIj1BZBa5psbsHbdZ3kbooEazpA-0-053833251e6614888772c1ddb17e3f55)
图3-9 表头渲染
表头渲染结束后,接下来实现表体渲染,表体的渲染是针对tr的渲染,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_54644.jpg?sign=1739413221-6kDULXIEUbxwguw4J9IdyX8wmGBOG95a-0-df2e029deab987ac0a2a61e4df8d7080)
运行结果如图3-10所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_2601.jpg?sign=1739413221-dnxDEXiuehSWQKtG86mMV5CZrOVnWGaY-0-df8ba713c9f2ae2a73e8abe394836e29)
图3-10 表体渲染
3.价格过滤器
本项目的价格都是一个纯数字,如果希望实现如图3-7所示的价格格式,则需要使用过滤器。全局过滤器和局部过滤器均可,此处选用局部过滤器,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_54645.jpg?sign=1739413221-eO43qZoSDNbBGJiP9SQfzLh9cGRuVvcS-0-2f429208e57dcf94fa0b049365a8beba)
构建完过滤器后,在标签中使用,代码如下:
<td>{{item.price | priceFilter}}</td>
运行结果如图3-11所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_2690.jpg?sign=1739413221-YMmjDdDvkuFkBxDL4mWTHaUf5jmjzac9-0-5c44f3e48c062d85763d820056fdb59e)
图3-11 过滤器
4.计算总价
总价的计算需要遍历整个books数组,将每项的价格与数量相乘并累加。这里选用JavaScript的reduce()方法,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_54646.jpg?sign=1739413221-r8qLdQKmkCmdM8hpTMzJWRTfSZVuhxDK-0-31766b1a17f054c26c47d9497ae6b2f4)
在HTML中调用并启用价格过滤器,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_54647.jpg?sign=1739413221-BfNoir9kmSxdyQheF7vaolEL59oLONba-0-0cebd68a662ba949ac6c865ab9ff7606)
运行结果如图3-12所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_2691.jpg?sign=1739413221-wWoPKgteQtYxrvTYZ3ykahAz5TAXTW5s-0-da5685b14ed72313a5561df82d8e2f4f)
图3-12 计算总价
5.购买数量
购买数量可以增加或减少。这里主要的逻辑在于:当触发减少时,如果数量小于或等于1,就需要禁止减少,因此需要增加判断语句。同时,商品数量的增加和减少都会使总价自动发生变化,购买数量的代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P55_54648.jpg?sign=1739413221-Dw7qkikRDqtMjJIq7SRsi2tPAINSzMhI-0-0e9fb197a7f9751d71c36f027072faac)
运行结果如图3-13所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P55_2871.jpg?sign=1739413221-pXx8HcYKcF9KAvZe4FNOYJfOktkyuDvi-0-2ca7c368dfe627148fe0aad2091a3c4c)
图3-13 购买数量的增加与减少
6.移除商品
移除商品就是删除指定索引值的数组项,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P55_55159.jpg?sign=1739413221-p7lRnRaK0i7ZcOa2JpbVH9Ii5feYicKc-0-fe1157bda88a993df65b6ed330bbaa0f)
至此,书店购物车项目完成。
本项目通过购物车操作示例,帮助读者回顾循环渲染、事件、过滤器、计算属性等Vue核心知识点。