![Vue.js光速入门及企业项目开发实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/46/52842046/b_52842046.jpg)
3.3 书店购物车项目实战
本节通过一个小型项目(书店购物车)来帮助读者掌握前文所提到的Vue.js相关知识点,效果如图3-7所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P50_1962.jpg?sign=1739602419-OKma5pvHUHpnzBltPv9fV0tqStXCGL5f-0-cf543dece49c387a39d2a261247bf557)
图3-7 书店购物车案例
1.搭建table结构
首先,搭建table结构,后续真实的数据需要靠for循环渲染。table结构使用HTML+CSS实现,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P50_55156.jpg?sign=1739602419-fljUyLwtQcpF9zt7dXt86PJCz4rbOX8z-0-9455208c823240b434cc1e6f4858eb20)
运行结果如图3-8所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P51_2185.jpg?sign=1739602419-dUXRSaYY1ct2MxGwGLCtFS04iYYCqC19-0-87dcba79d455d10d0d8c9990e9571401)
图3-8 table结构搭建
2.数据渲染
本项目需要数据渲染,此处提供循环的数据。分别有表格表头和表体数据,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P51_55157.jpg?sign=1739602419-5v8pCv2D9vJkqAUAqLhBytHI9aaNsw06-0-72d8f59d90cae8c7e8bb3c4a51717cf0)
接下来实现for循环遍历,首先渲染表格头部,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P52_54643.jpg?sign=1739602419-7WlvlFn5SVVRYDaEIibbhiSF3dVM3oAR-0-484e8edc7ffa5f412918ef9c46121001)
表头渲染的结果如图3-9所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_2600.jpg?sign=1739602419-0ayO8H7twojTFtBMDdniejLqTIhfWWym-0-64f81ed3a06b892a28d467e5726c5e61)
图3-9 表头渲染
表头渲染结束后,接下来实现表体渲染,表体的渲染是针对tr的渲染,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_54644.jpg?sign=1739602419-t5LjHrMcghttZYoLp8ccRSqijW9cl273-0-8ee431658f5175dfec1a8970e2e02946)
运行结果如图3-10所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_2601.jpg?sign=1739602419-jHmkF3HbOCjxQHtPe0mibCwZajFZEl4J-0-3651265e95e76154891fc83c8126f03c)
图3-10 表体渲染
3.价格过滤器
本项目的价格都是一个纯数字,如果希望实现如图3-7所示的价格格式,则需要使用过滤器。全局过滤器和局部过滤器均可,此处选用局部过滤器,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_54645.jpg?sign=1739602419-SDe9xIoDd7HtD2VXD3BEmgyKkLVaxq2L-0-601134392d7b214ca78ed74c38e885d7)
构建完过滤器后,在标签中使用,代码如下:
<td>{{item.price | priceFilter}}</td>
运行结果如图3-11所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_2690.jpg?sign=1739602419-ZA1jJzSwei2RCipPp1EdQAWNwsMGphnw-0-28d788172020f1d59abbd24aa0368c16)
图3-11 过滤器
4.计算总价
总价的计算需要遍历整个books数组,将每项的价格与数量相乘并累加。这里选用JavaScript的reduce()方法,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_54646.jpg?sign=1739602419-oZnuLtUnGZeCK1JDXKgZCXfc0pzTTBRU-0-ce4ccb94e53a7e5116d7eacd5cb0cff0)
在HTML中调用并启用价格过滤器,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_54647.jpg?sign=1739602419-r6HN14nVCxoeAGvFAucuSkFb41q5RHi2-0-7966a031e6d7a235a47749dbc7bd57fd)
运行结果如图3-12所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_2691.jpg?sign=1739602419-FVW69nrCbGcVWj36X2guEUxxdrVV9hsI-0-67a821504dbfbf8fa0c23f28b9a3a1fd)
图3-12 计算总价
5.购买数量
购买数量可以增加或减少。这里主要的逻辑在于:当触发减少时,如果数量小于或等于1,就需要禁止减少,因此需要增加判断语句。同时,商品数量的增加和减少都会使总价自动发生变化,购买数量的代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P55_54648.jpg?sign=1739602419-Kkfwg9RZNTVl61T1tAeUJQ2dsMN8oZYu-0-5cd1a10fd9bd50bd59f18888c4feb2df)
运行结果如图3-13所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P55_2871.jpg?sign=1739602419-akuYlyYinfKCGgxevLePDFtRVhTRJVuS-0-1bf408ef016300d65479fb55cbbaa569)
图3-13 购买数量的增加与减少
6.移除商品
移除商品就是删除指定索引值的数组项,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P55_55159.jpg?sign=1739602419-uBm9I56awj7k4AWgmHPNB4nQh6hUicA2-0-4bfacc9a0bbd22c0814c088af4a1ba7c)
至此,书店购物车项目完成。
本项目通过购物车操作示例,帮助读者回顾循环渲染、事件、过滤器、计算属性等Vue核心知识点。