爱收集资源网

Vue.js技巧性系列,学以致用

网络整理 2023-10-29 10:00

序言

从这篇文章开始,我打算给你们分享一些关于Vue.js这窗框架的方法性系列文章,刚好我们公司项目中也用到了Vue。所以,教是最好的学。进阶篇比较适宜于二三线城市,还在小厂打拼的童鞋们。欢迎大家跟随闰土阿姨走入MVVM时代。

首先,须要申明一点,本篇文章不会从基础开始讲起,由于Vue官方文档早已讲得很清楚了,我就不再赘言了。所以,之前对Vue这窗框架不太熟悉的童鞋可以先去官网上瞧瞧基础知识,例如Vue的模板句型、计算属性、条件渲染、列表渲染、事件处理、表单输入绑定以及Class与Style绑定等。进阶篇我会注重讲点官网入门手册没提到的、偏方法性的东西。

这么接出来用php做购物车加减按钮,搬好小板凳,正文从这开始~

在开始写购物车的业务代码前,我们须要对需求进行剖析,这样有助于我们理清业务逻辑。首先,购物车须要展示一个已加入购物车的商品列表,包含商品的名称、单价、购买数目和操作等信息,还须要实时显示订购的单价。其中订购数目可以降低或降低,每类商品还可以从购物车中移除。最终实现的疗效如右图所示:

在明晰需求以后,我们就可以开始动手敲代码了。基础篇就会以直接引入Vue.js文件为例。先在index.html中引入Vue.js,之后创建一个根元素来挂载Vue实例,在data选项内写入我们须要的数据列表,上面包含了商品名称、单价、购买数目。这儿须要说明一下,在实际业务中,这个列表是通过Ajax从服务端动态获取的,这儿只做示例:

 1 var app = new Vue({
 2       el:'#app',
 3       data:{
 4         list:[
 5           {
 6             id:1,
 7             name:'iphone X',
 8             price:8388,
 9             count:1
10           },
11           {
12             id:2,
13             name:'apple watch3',
14             price:2888,
15             count:1
16           },
17           {
18             id:3,
19             name:'MackBook Pro',
20             price:12488,
21             count:1
22           }
23         ]
24       }
25 })

数据建立好以后,我们便可以在index.html中展示列表了,毫无疑惑的是,肯定会用到v-for指令。为了考虑到用户体验,我们在这儿须要做一点小小的优化。由于每位商品都是可以从购物车删掉的,所以当列表为空时,在页面显示一个“购物车为空”的提示会愈加友好,我们可以通过判定链表list的厚度来实现该功能:

购物车加减按钮代码_用php做购物车加减按钮_购物车加减功能

1 
2 31
购物车为空
32

Tips:解决Vue初始化慢造成页面闪烁的最佳实践

相信眼尖的同学会发觉一个比较陌生的指令v-cloak,它到底是干嘛的?官网手册里也没提及啊...

这儿抖一个小包袱,论解决Vue初始化慢造成页面闪烁的最佳实践。你可能会发觉,当网速较慢、Vue.js文件还没加载完时,在页面上会显示{{配准}}的字样,晓得Vue创建实例、编译模板时,DOM就会被替换,所以这个过程屏幕是有闪烁的。于是,v-cloak指令应运而生,你只须要在根元素上添加上这个指令,之后在CSS中添加上一句:

1 [v-cloak]{
2       display:none;
3 }

就可以完美的解决这个问题了。但须要注意的是,v-cloak对于简单的项目很实用,而且在具有webpack工程化的项目里,项目的HTML结构只有一个空的div元素,剩余的内容都是由路由去挂载不同组件完成的,所以不再须要v-cloak。

让我们接着说回购物车的事情。单价totalPrice是依赖于商品列表而动态变化的,所以我们要考虑用估算属性来实现,顺便将结果转化为带有“千位分隔符”的数字。

 1 computed:{
 2       totalPrice: function(){
 3             var total = 0;
 4             for(var i=0;i

这段代码的难点在于千位分隔符的转换(每隔三位数加进一个冒号),诸位童鞋可以查阅正则匹配的相关内容后尝试了解replace()的正则含意。

购物车加减功能_购物车加减按钮代码_用php做购物车加减按钮

最后就剩下商品列表的渲染和相关的几个操作了。先是用v-for指令把链表list循环下来。商品序号、名称、单价、数量都是直接使用配准来完成的,在第4列的两个按键用于增减订购数目用php做购物车加减按钮,分别绑定了两个方式handleReduce和handleAdd,参数都是当前商品在链表list中的索引。button中使用了v-bind和v-on两个指令(这儿用的都是句型糖写法)。

Tips:哪些是句型糖

句型糖就是指在不影响功能的情况下,添加了某种方式实现同样的疗效。

让我们接着说回button绑定的动态属性disabled,每件商品订购数目最少是1件,所以当count为1时,不容许再继续降低,所以这儿给动态绑定了disabled特点来禁用按键。

最后就是在methods选项内添加3个方式:

 1 methods:{
 2         handleReduce: function(index){
 3           if(this.list[index].count === 1) return;
 4           this.list[index].count--;
 5         },
 6         handleAdd: function(index){
 7           this.list[index].count++;
 8         },
 9         handleRemove: function(index){
10           this.list.splice(index, 1);
11         }
12 }

这3个方式都是直接对链表list的操作,没有太复杂的逻辑。须要说明的是,即使在button上早已绑定了disabled特点,并且在handleReduce方式内又判定了一遍。这是由于在个别时侯,可能不一定会用button标签,也可能是div、span等,给它们降低disabled是没有任何作用的,所以为了安全起见,在业务逻辑中再判定一次,防止因更改HTML模板后出现bug。

杂记

这大约就是一次用Vue构建电商项目中的购物车模块的所有实现过程。这可能是大家学习Vue.js框架的一小步,却是我当Vue讲师梦想迈出的一大步。

用php做购物车加减按钮