![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=1739257037-Fwq7GR4jGEQMkm3fVOf5TLtM7lWjlzyV-0-9a5b57d37e619cbfbd86b0ebba3d0f89)
图3-7 书店购物车案例
1.搭建table结构
首先,搭建table结构,后续真实的数据需要靠for循环渲染。table结构使用HTML+CSS实现,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P50_55156.jpg?sign=1739257037-3wCkfWS77Gvj0yVPhlSwhoOGWWdNn4QD-0-c60a169f522dc8d7aa107f8144fb266a)
运行结果如图3-8所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P51_2185.jpg?sign=1739257037-Ju2IiIsSBLsfLNxbl42Tqz9niJZAES5F-0-1f444a79ee60941ccc842845c0e989a3)
图3-8 table结构搭建
2.数据渲染
本项目需要数据渲染,此处提供循环的数据。分别有表格表头和表体数据,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P51_55157.jpg?sign=1739257037-PFiYpQmgGF7qqCN15jMa9jMJD50nTCT5-0-589d871db2a0c222e31cd793ab51b41c)
接下来实现for循环遍历,首先渲染表格头部,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P52_54643.jpg?sign=1739257037-UUAuAk8EXqUGDJyZyNicFH83lyPeEZP0-0-8d9bf17ab5929dd4670dc2a974cae370)
表头渲染的结果如图3-9所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_2600.jpg?sign=1739257037-9zCNQnVobEKBMXaYpFTWv3YxuUTe8Am4-0-d22a4aa73b3f9968a4faaee9dbeebfb4)
图3-9 表头渲染
表头渲染结束后,接下来实现表体渲染,表体的渲染是针对tr的渲染,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_54644.jpg?sign=1739257037-r02hHahdVqabpe2nhpPMXXdfZ7URs2N9-0-32341a9fb25aa644cdc7a8be95211567)
运行结果如图3-10所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_2601.jpg?sign=1739257037-oc96ladak5Bi34LXQHqcR3ZTtV9zHG9e-0-7ae5136a58ccc8af3f1ccb296416908a)
图3-10 表体渲染
3.价格过滤器
本项目的价格都是一个纯数字,如果希望实现如图3-7所示的价格格式,则需要使用过滤器。全局过滤器和局部过滤器均可,此处选用局部过滤器,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P53_54645.jpg?sign=1739257037-35dg9FyJLKdclb3DJym7mRUEKCJ5rT9A-0-1e4ae658c0e32ff1407065cf841adde8)
构建完过滤器后,在标签中使用,代码如下:
<td>{{item.price | priceFilter}}</td>
运行结果如图3-11所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_2690.jpg?sign=1739257037-xKp6yQAfB3RAxZsEbFiVijM5iskMkR1x-0-c9262c45f629ea1ca6e18efaf76515e1)
图3-11 过滤器
4.计算总价
总价的计算需要遍历整个books数组,将每项的价格与数量相乘并累加。这里选用JavaScript的reduce()方法,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_54646.jpg?sign=1739257037-APHkWokx4P6zjD14n68TweUQyjPOqAMB-0-52dcf799597e0570c0345d017851bc1c)
在HTML中调用并启用价格过滤器,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_54647.jpg?sign=1739257037-MZmXux5LJcvdcaHzCKoGGozcodEVaVY7-0-d8d56857e4fc420a9542e992031afca1)
运行结果如图3-12所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P54_2691.jpg?sign=1739257037-3NGyl3OmU0MNgrFWnU4Z3qkijgMsZfAt-0-f34ab29f549d1d0a0b7034c64e3e0d38)
图3-12 计算总价
5.购买数量
购买数量可以增加或减少。这里主要的逻辑在于:当触发减少时,如果数量小于或等于1,就需要禁止减少,因此需要增加判断语句。同时,商品数量的增加和减少都会使总价自动发生变化,购买数量的代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P55_54648.jpg?sign=1739257037-R75Ard0c2VBv9IdKCYhvZfU40knrh51N-0-e682e7e1c20b8c67ac46df3b3896b60e)
运行结果如图3-13所示。
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P55_2871.jpg?sign=1739257037-2X2NeSh8LnIYlA4FiRinUV70sxZnEBmm-0-e598445526932f4ed7e305268bb18581)
图3-13 购买数量的增加与减少
6.移除商品
移除商品就是删除指定索引值的数组项,代码如下:
![](https://epubservercos.yuewen.com/45A45B/31397211203708206/epubprivate/OEBPS/Images/Figure-P55_55159.jpg?sign=1739257037-iPHz0dquU9157THijlPKzoGAQpQ4CfAl-0-f41327cec6a4f7c8116fac695548b3e0)
至此,书店购物车项目完成。
本项目通过购物车操作示例,帮助读者回顾循环渲染、事件、过滤器、计算属性等Vue核心知识点。