Vue全家桶之实现购物车案例图文讲解


1、基本环境搭建

在这里插入图片描述

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="style.css">
</head>
<script src="./js/vue.js"></script>
<body>
    <div id="app">
        <table>
            <thead>
                <tr>
                    <th></th>
                    <th>书籍</th>
                    <th>出版日期</th>
                    <th>价格</th>
                    <th>购买数量</th>
                    <th>操作</th>
                </tr>
            </thead>
            <tbody>
                <tr v-for="item in books">
                    <td>{{item.id}}</td>
                    <td>{{item.name}}</td>
                    <td>{{item.date}}</td>
                    <td>{{item.price}}</td>
                    <td>
                        <button>
                            -
                        </button>
                            1
                        <button>
                            +
                        </button>
                    </td>
                    <td>
                        <button>移除</button>
                    </td>
                </tr>
            </tbody>
        </table>
    </div>

<script src="main.js"></script>
</body>
</html>

main.js

const app = new Vue({
    el: "#app",
    data:{
        books: [
            {
                id: 1,
                name: '《大话数据结构》',
                date: '2020-09-13',
                price: 51.00,
                count: 2
            },
            {
                id: 2,
                name: '《Java从入门到精通》',
                date: '2020-09-13',
                price: 69.00,
                count: 1
            },
            {
                id: 3,
                name: '《Python爬虫全套》',
                date: '2020-09-13',
                price: 99.00,
                count: 3
            },
            {
                id: 4,
                name: '《Hadoop入门到精通》',
                date: '2020-09-13',
                price: 88.00,
                count: 5
            }
        ]
    }
})

style.css

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

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

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

搭建结果
在这里插入图片描述

简单讲述搭建过程
在这里插入图片描述
在这里插入图片描述


2、使用过滤器对价格进行优化

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
实现结果
在这里插入图片描述


3、改变购买数量

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
通过v-bind,当数量小于等于1时,使减号按钮不能点击
在这里插入图片描述


4、实现移除按钮并计算总价格

在这里插入图片描述
全部移除后出现以下结果,这当然是不行的
在这里插入图片描述
优化后
在这里插入图片描述
在这里插入图片描述

计算总价格

在这里插入图片描述

在这里插入图片描述


5、完整代码

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="style.css">
</head>
<script src="./js/vue.js"></script>
<body>
    <div id="app">
        <div v-if="books.length">
            <table>
                <thead>
                <tr>
                    <th></th>
                    <th>书籍</th>
                    <th>出版日期</th>
                    <th>价格</th>
                    <th>购买数量</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                <tr v-for="(item,index) in books">
                    <td>{{item.id}}</td>
                    <td>{{item.name}}</td>
                    <td>{{item.date}}</td>
                    <td>{{item.price | showPrice}}</td>
                    <td>
                        <button @click="decrement(index)" v-bind:disabled="item.count <= 1">
                            -
                        </button>
                        {{item.count}}
                        <button @click="increment(index)">
                            +
                        </button>
                    </td>
                    <td>
                        <button @click="remove(index)">移除</button>
                    </td>
                </tr>
                </tbody>
            </table>
            <h2>总价格:{{totalPrice | showPrice}}</h2>
        </div>
        <h2 v-else>购物车为空</h2>
    </div>

<script src="main.js"></script>
</body>
</html>

main.js

const app = new Vue({
    el: "#app",
    data:{
        books: [
            {
                id: 1,
                name: '《大话数据结构》',
                date: '2020-09-13',
                price: 51.00,
                count: 2
            },
            {
                id: 2,
                name: '《Java从入门到精通》',
                date: '2020-09-13',
                price: 69.00,
                count: 1
            },
            {
                id: 3,
                name: '《Python爬虫全套》',
                date: '2020-09-13',
                price: 99.00,
                count: 3
            },
            {
                id: 4,
                name: '《Hadoop入门到精通》',
                date: '2020-09-13',
                price: 88.00,
                count: 5
            }
        ]
    },
    filters: {
        showPrice(price){
            return '¥' + price.toFixed(2);
        }
    },
    methods:{
        increment(index){
            this.books[index].count++
        },
        decrement(index){
            this.books[index].count--
        },
        remove(index){
            this.books.splice(index,1)
        }
    },
    computed:{
        totalPrice(){
            let allPrice = 0;
            for(let i = 0;i < this.books.length;i++){
                allPrice += this.books[i].price * this.books[i].count
            }
            return allPrice
        }
    }
})

style.css

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

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

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

博主会持续更新,有兴趣的小伙伴可以点赞、关注和收藏下哦,你们的支持就是我创作最大的动力!

Java学习从入门到大神学习目录索引

博主开源Python爬虫教程目录索引(宝藏教程,你值得拥有!)

在这里插入图片描述

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue全家桶之组件化开发是指使用Vue.js(一个用于构建用户界面的渐进式框架)以及其周边生态工具,如Vue Router和Vuex等,进行组件化开发。 组件化开发是一种将界面拆分成独立且可重用的组件的开发方式。Vue.js支持编写和使用组件,使得开发者可以将一个大型的应用程序拆分成小的、功能独立的组件来管理,从而更好地组织代码、提高代码的可维护性和重用性。 在Vue全家桶中,通过Vue.js可以轻松地创建组件,然后使用Vue Router管理不同组件之间的路由,实现单页应用的页面切换和导航。同时,使用Vuex可以进行状态管理,将共享的数据存储在store中,并通过各组件之间的通信来实现数据的同步和共享。 使用Vue全家桶进行组件化开发有以下好处: 1. 提高开发效率:通过组件化的方式,可以将一个大型应用拆分成小的组件,每个组件专注于自己的功能,降低了开发的复杂度,提高了开发效率。 2. 提高代码的可维护性:组件化开发使得代码模块化,每个组件都是相对独立的,易于维护和修改。同时,组件之间通过Props和Events进行通信,降低了组件间的耦合度。 3. 提高代码的复用性:组件化开发使得组件可以在不同的项目中被重用,减少了冗余的代码编写,提高了代码的复用性和可扩展性。 总之,Vue全家桶的组件化开发使得开发者可以更好地组织和管理代码,提高开发效率和代码的可维护性,同时促进代码的复用和扩展。对于大型项目或需要频繁更新迭代的项目来说,采用组件化开发是一个明智的选择。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值