vue基础篇实战总结一:购物车实战

上周看完了vue基础篇 本想继续看进阶篇 本着基础不牢地动山摇的原则 特地总结重新再写一遍基础篇中实战开发过的一些小东西,以加深熟练度
如果还没有开始vue学习的朋友可以看这本书,还不错
链接:https://pan.baidu.com/s/110W8Rv0ZtxpQdmh3UQNx8A
提取码:qwd1

ok,接下来开始我的总结之路把!
第一个实战:
开发一个购物车
首先,咱们先把长相弄出来(也就是HTML和css) 我使用了pug模板引擎 和 bootstrap框架 这俩都很简单的 百度就花几个小时就自己可以搞定
(pug)HTML:

.container(style="margin-top:100px")
            .row
                #app1
                    #pay_car(v-cloak)
                        template
                            table
                                thead
                                    tr
                                        th 商品ID
                                        th 商品名称
                                        th 商品单价
                                        th 购买数量
                                        th 操作
                                        th 选中
                                tbody
                                    template
                                        tr
                                        tr
                                            td
                                            td
                                            td
                                            td
                                            td
                                            td
                            div 总价:$yen;
                                button 全选
                        div 购物车为空

看上去 十分简单 也很好理解 至于那里有两个template,template这个东西 可以用来传值 通俗点就是template下面的子元素可以使用template的参数吧(不太知道怎么形容-.-) 子元素使用这个参数之后就可以干些事情了下面会接着说
CSS:

[v-cloak]{
    display: none;
}

table{
    border: 1px solid #e9e9e9;
    border-collapse:collapse;
    border-spacing: 0;
    empty-cells: show;
}

th,td{
    padding: 8px 16px;
    border:1px solid #e9e9e9;
    text-align: center;
}

th{
    background:#f7f7f7;
    color:#5c6b77;
    font-weight: 600;
    white-space: nowrap;
}

CSS十分简洁 那个v-cloak就是防止加载vue的时候出现闪烁的一个vue指令 不用太纠结这个
好了,接下来开始写js,一个一个解释一下吧,data里面有两个数据 一个是叫types的数组,用于表示商品的种类 一个是叫list的二维数组 用于表示商品信息 list二维数组里的一个数组代表一类商品,而下面的computed计算属性有一个函数是totalprice是用于当数据变更的时候及时计算当前总价,响应式的更新视图,比如我删掉一个数据 那总价就相应减少这个函数就这意思。
然后四个函数分别是手动减少增加移除和全选。 整个功能就这些 很简单的一个购物车

var par_car = new Vue({
    el:'#pay_car',
    data:{
        types:[
            {type:'LOL'},
            {type:'家用电器'}
        ],
        list:[
            [
                {
                    id:1,
                    name:'瑞文-冠军之刃',
                    price:79,
                    count:1,
                    is_choose:false
                },
                {
                    id:2,
                    name:'亚索-西部牛仔',
                    price:45,
                    count:2,
                    is_choose:false
                },
                {
                    id:3,
                    name:'盖伦-钢铁军团',
                    price:99,
                    count:5,
                    is_choose:false
                }
            ],
            [
                {
                    id:1,
                    name:'洗衣机',
                    price:4999,
                    count:1,
                    is_choose:false
                },
                {
                    id:2,
                    name:'微波炉',
                    price:345,
                    count:2,
                    is_choose:false
                },
                {
                    id:3,
                    name:'电磁炉',
                    price:199,
                    count:5,
                    is_choose:false
                }
            ]
        ]
    },
    computed:{
        totalprice:function(){

        }
    },
    methods:{
        handleReduce:function(){

        },
        handleAdd:function(){

        },
        handleRemove:function(){

        },
        chooseAll:function(){
            
        }
    }
})

好了,现在来完善一下HTML
HTML: 下面多了很多很多东西啊 我从上解释到下 你可以边看这段文字边看代码
首先 第一个template那 多了个v-if="list.length"这个就是如果list数组为0 也就是没有商品了(你移除的时候)都没有商品了就不显示整个功能区了,然后这个时候你看最后一行有一个v-else指令 当没有商品时候就显示下面那个玩意 也就是 "购物车为空"这段话
接着,下面tbody的template多了个v-for 用来遍历list的一级数组,记住别用div或者其他东西 用了你的值传不到下面,下面接收不到就渲染不出来。当然你也可以用props父传子传值,这是后面的实战了这里可用可不用。
好 接着下面tr又是一次遍历二级数组 其实就是一个循环嵌套 这样理解就行了。
然后主要是下面 按钮一个减号和一个加号的中间还显示当前商品的数量
点击减号按钮就去执行函数,加号按钮一样
减号按钮还有一个指令:disabled 也很好理解 就是当前商品数量为1的时候就无法使用按钮
后面也没啥了 双向绑定是否被选中的值 这对计算总价有用处 选中的计算 没选中的就不计算。
然后有个全选按钮就调用函数就可以了。

.container(style="margin-top:100px")
            .row
                #app1
                    #pay_car(v-cloak)
                        template(v-if="list.length")
                            table
                                thead
                                    tr
                                        th 商品ID
                                        th 商品名称
                                        th 商品单价
                                        th 购买数量
                                        th 操作
                                        th 选中
                                tbody
                                    template(v-for="(items,index) of list")
                                        tr {{types[index].type}}
                                        tr(v-for="(item,indexes) of items")
                                            td  {{item.id}}
                                            td  {{item.name}}
                                            td  {{item.price}}
                                            td
                                                button(@click="handleReduce()" :disabled="item.count===1" style="float:left") -
                                                div(style="float:left") {{item.count}}
                                                button(@click="handleAdd()" style="float:left") +
                                            td
                                                button(@click="handleRemove()") 移除 
                                            td
                                                input(type="checkbox",v-model="item.is_choose")
                            div 总价: ¥{{totalprice}}
                                button(@click="chooseAll" style="position:relative;right:0") 全选
                        div(v-else="") 购物车为空

接下来完善js 一会还会回来改一下HTML就结束了
js 先是点击减号按钮 减少数量的函数handleReduce():
这个函数很简单 只需要传入当前item的两个下标 然后在函数里面进行当前item的自减就可以了,只是当数量为1时无法减少,以防万一嘛。

 handleReduce:function(indexes,index){
            if(this.list[index][indexes].count===1){
                return;
            }
            this.list[index][indexes].count-=1;
        }

然后是增加函数,同理

handleAdd:function(indexes,index){
            this.list[index][indexes].count += 1; 
        }

然后是移除函数:

handleRemove:function(indexes,index){
            //直接从二级数组里面
            this.list[index].splice(indexes,1);
            //如果删除以后整个list[index]空了
            if(!this.list[index].length){
                this.list.splice(index,1);
                this.types.splice(index,1);
            }
        }

全选函数:

chooseAll:function(){
            //将所有item的is_choose置true
            for(let i = 0 ; i < this.list.length;i++){
                for(let j = 0; j < this.list[i].length;j++){
                    this.list[i][j].is_choose = true;
                }
            }
        }

最终的HTML

.container(style="margin-top:100px")
            .row
                #app1
                    #pay_car(v-cloak)
                        template(v-if="list.length")
                            table
                                thead
                                    tr
                                        th 商品ID
                                        th 商品名称
                                        th 商品单价
                                        th 购买数量
                                        th 操作
                                        th 选中
                                tbody
                                    template(v-for="(items,index) of list")
                                        tr {{types[index].type}}
                                        tr(v-for="(item,indexes) of items")
                                            td  {{item.id}}
                                            td  {{item.name}}
                                            td  {{item.price}}
                                            td
                                                button(@click="handleReduce(indexes,index)" :disabled="item.count===1" style="float:left") -
                                                div(style="float:left") {{item.count}}
                                                button(@click="handleAdd(indexes,index)" style="float:left") +
                                            td
                                                button(@click="handleRemove(indexes,index)") 移除 
                                            td
                                                input(type="checkbox",v-model="item.is_choose")
                            div 总价: &yen;{{totalprice}}
                                button(@click="chooseAll" style="position:relative;right:0") 全选
                        div(v-else="") 购物车为空

好了,到这里,一个小小的购物车就这样做好咯

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在vue实战入门基础篇二中,我们将会从零开始搭建一个仿门户网站的实例,这个实例包括了前端页面的设计和后端API的实现。在开始这个实例之前,我们需要选定一个开发框架,这个框架将会支持我们在开发中的需求,并且方便我们的团队协作和项目管理。 在选择框架之前,我们需要考虑以下因素:开发速度、团队协作、可维护性和可扩展性。因此,我们应该选择一个适合我们现有技术栈的框架,并且具备这些因素。 在这个实例中,我们选择了vue.js作为我们的开发框架。vue.js是一个流行的JavaScript框架,它提供了强大的工具来开发富客户端应用程序。它易于使用和学习,并且对于大多数应用程序而言,它具有良好的性能。 在搭建框架时,我们采用了vue-cli工具来建立vue.js的项目模板。vue-cli可以为我们自动配置开发环境、构建工具和其他常见的开发工具,从而减少我们的开发时间。使用vue-cli搭建框架时,我们可以根据我们的需求选择所支持的特性,并且自定义构建配置。 搭建好框架后,我们还需要依次配置vue-router、vuex、axios等工具,用于路由管理、状态管理和API请求。这些工具可以加速我们的开发过程,并且有助于我们在开发过程中实现更好的代码组织,提高代码质量和可维护性。 总之,搭建一个好的开发框架是成功的开发的关键之一。我们应该选择一个适合我们项目需求的框架,同时尽可能地利用现有的工具和库来支持我们的开发过程。 ### 回答2: Vue实战入门基础篇二:从零开始仿门户网站实例-开发框架搭建,主要是介绍如何使用Vue.js开发一个门户网站的搭建方法。在此基础篇中,我们将会学习如何使用vue-cli建立Vue.js的基本项目框架,并结合Bootstrap、FontAwesome等前端开发产品来丰富我们的门户网站页面。 首先,我们需要安装Vue CLI,这是Vue.js官方提供的脚手架工具,可以快速生成Vue.js项目的基本架构。安装Vue CLI之后,我们可以通过命令行在终端中进入到目标项目目录,并通过vue create projectName命令来创建一个Vue.js项目。 接下来,我们需要安装Bootstrap和FontAwesome,因为它们是实现我们门户网站样式和布局的重要工具。我们可以通过npm命令来安装它们:npm install bootstrap @fortawesome/fontawesome-free。 安装成功之后,我们可以在Vue.js的组件中使用Bootstrap和FontAwesome提供的样式和图标。在项目开发中,我们可以通过组件化的思想,将各个部分拆分为独立的组件,再通过父子组件的嵌套来构建整个门户网站的页面。 在搭建门户网站页面的过程中,还需要注意一些细节问题。比如在Vue.js中如何使用路由功能来实现不同页面之间的跳转,如何进行页面的布局和调整等等。通过综合运用Vue.js的基本语法和其它前端产品,我们可以初步完成一个仿门户网站的实例。 总之,Vue实战入门基础篇二:从零开始仿门户网站实例-开发框架搭建,是一个非常实用的课程,可以帮助我们了解Vue.js在实际项目开发中的具体应用。掌握这些基础知识之后,我们可以更加专业、高效地进行门户网站开发工作。 ### 回答3: 本次教程是基于Vue.js框架来实现仿门户网站的实例教程,本文将重点介绍如何搭建开发框架。 首先,我们需要安装Vue.js框架,可以通过官网下载或者使用npm命令行工具安装,具体方法可以参考Vue.js官网上的介绍。 安装好Vue.js之后,我们需要使用Vue.js提供的命令行工具Vue CLI来搭建开发框架。首先,我们需要在命令行中输入以下命令: ``` npm install -g @vue/cli ``` 接着,我们可以创建一个新的Vue项目,可以使用以下命令: ``` vue create project-name ``` 其中,project-name是你自定义的项目名称。接下来,我们可以根据自己的需求选择不同的配置。例如,我们可以选择手动配置,来选择需要的插件和功能。然后,我们需要安装一些Vue.js的插件,例如Vue Router和Vuex。 ``` npm install vue-router vuex --save ``` 安装好插件之后,我们需要在项目中创建一些组件和页面。这些组件和页面可以根据实际需求来创建,例如首页组件、新闻组件、产品组件等。在创建组件和页面之前,我们需要在src目录下创建一个views文件夹来存放页面组件,在src/components文件夹下创建组件。 接着,我们可以使用Vue.js提供的语法来编写组件、页面和路由等。在编写代码的过程中,我们可以参考Vue.js官方文档和各种教程、博客等。 总而言之,搭建好开发框架是Vue.js实现仿门户网站的第一步。在开发过程中,我们需要不断学习和掌握Vue.js的语法、功能和特点,结合实际需求来不断优化和完善代码,最终实现一个完整的门户网站。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值