简单Vue购物车项目总结

       近期跟着网易云小D课堂了解了Vue的基本知识,做了个简易的购物车项目。我在这通过这个购物车项目,将近期学的知识进行汇总。(大体是Vue核心知识点&组件化开发,无路由)

项目来源:vue全新核心技术讲解+实战精讲 - 网易云课堂

目录

1.项目展示

2.新增课程至课程汇总

3. 增加到购物车

1.项目展示

        一个简单购物车项目,可创建课程与相应价格(图二),可将所需课程添加到购物车中,并增加/减少数量,若减少至零会有弹窗显示是否删除,最后还会计算选中课程数和对应金额(图三与图四),添加到购物车的数据会保存至本地,所以页面刷新时数据依然存在(图一)

图一

图二

图三图四 

       最开始,我估计:会用computed(算钱),watched(找复杂数据类型的值),双向数据绑定v-model(传从页面到内存的新增课程名和价钱),和非父子组件的通信(在课程汇总中传递课程名和价钱),做完发现我天真了= =。后面根据:1.新增课程至课程汇总; 2.增加到购物车 3.其他 来进行总结。(不会有全部源码,只会有代码块!)

2.新增课程至课程汇总

2.1 如何显示已有课程名称和价格

我最开始的想法很简陋,不就是:

<ul>
    <li>
        课程名称:SpringCloud--价格:20
        <button @click="something">添加到购物车</button>
    </li>
</ul>

但看到老师的写法后(数组+v-for),简单,避免重复代码和大量数据要添加到无序列表的麻烦 。

<script type="text/javascript">
var list=[
    {courseName:'matlab',price:36},
    {courseName:'Python',price:40}
]
</script>

<html>
    <ul>
        <li v-for='course in list'>
            课程名:course.courseName--价格:course.price
        </li>
    </ul>    
</html>

2.2 双向绑定,通过按钮将新课名+价钱传给已有list并显示 

        用 push 可将新课名+价格加入到数组中。

        一个优化操作:当传完了从input的数据时,需要将<input>清空,一行代码(没讲这一下我还没意识到这么简单)

this.courseName=''
this.price=''

        一个后续操作:需要判断每个输入是否不为空并且合法,如果不是,可以用弹窗进行提醒。

3. 增加到购物车

3.1 一个回忆

<table border="1"></table>

 来让边框有线

 3.2 购物车规则

因为这里需要商品数量,所以要进行判断:在购物车中是否已有该商品(通过索引进行区分),如果有,数量加1;如果没有,新创一行来存放变量。

其中,JS小萌新发现,用箭头函数和find(1行)比用for +if(起码5行) 的方法来判断课程名是否在新数组中简单许多,而且这个result是find找到的符合条件的第一个值

const result=this.list.find(v=>v.text==goods.text)

注:要系统了解箭头函数

3.3  如何在已有数组中新增一个对象

这里主要是用了ES6的展开函数

this.list.push({...goods,count:1,active:true})

       这时goods里面有课程名和价钱,我们通过展开函数将他们俩依次作为参数传递,而且这样也方便新增属性。

3.4 三个回忆

复选框的type是checkbox!

<input type="checkbox">

带有指定消息+确认/取消的对话框

if(window.confirm(`确认是否要删除$(this.list[index].text)吗?`)){
    //...
}

4. splice的用法

 

//1.删除一个对象
splice(index,1)

//2.于数组index位置新增一个字符串
splice(index,0,'banana')

4. 其他

4.1 如何判断复选框是否被选中 & 计算选中的数目

在HTML中,复选框选中用的是check属性

<input type="checkbox" check="checked">

而这里,运用了active: true/false 判断复选框是否被选中,当然还是运用了数据的双向绑定来把选中状态传给数组。

而计算选中的数目时,运用了ES6 filter函数,判断每个对象active的属性是否为true,最后得到选中数量。

this.list.filter(v=>v.active).length

4.2 计算总价格的方法

依然还是在compued中进行

let totalPrice=0
this.list.forEach(v=>{
    totalPrice+= v.price * v.count
})

 4.3 保存本地数据在刷新后不丢失

个人觉得这个应用点在于:用户误关闭后重新打开,依然可以从之前的地方再次开始。运用的是localStorage。当时自己出错的点在于,刷新网页后,打开'Application',数据还在,但是页面却没有相应数据。后来发现,本地页面刚出,用于展示数据的created()函数,我当时写的时候放到methods里去了。

这里运用的是HTML5新增特性localStorage。它将我们购物车中的内容直接存储到数据库,相当于前端页面的数据库。

写入方法:

//JSON.stringify()将JS值转为JSON字符串
window.localStorage.setItem('key',JSON.stringify(this.list))

 localStorage中数据:

读取localStorage数据:

//判断非空,防止清空缓存后报错
if(window.localStorage.getItem('key') != null){
    var json = window.localStorage.getItem('key')
    //将JSON对象转为JS对象
    var jsonObj = JSON.parse(json)
    this.list = jsonObj
}

 最后,存入到localStorage是在watch中执行的,watch 观察,无缓存性,一旦发现监听数据改变(这里是购物车的list),相应就会回调执行对应操作,因为监听不到text属性的值,所以,需要深度监听

watch:{
    list: {
        handler(){
            //
        },
        deep: true
    }
}

继续学习吧TAT,这一个月起码Vue项目、现代JS教程、三大件和计网的八股要熟悉了,然后海投吧

 

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以为您推荐几个 Vue.js 项目: 1. Vue CLI:这是一个 Vue.js 项目的脚手架工具,可以快速创建一个 Vue.js 项目的骨架,并且内置了很多有用的插件,可以帮助你快速开发 Vue.js 应用。 2. Vuex:这是一个专门为 Vue.js 应用设计的状态管理模式,可以帮助你统一管理应用中的数据流。 3. Nuxt.js:这是一个基于 Vue.js 的服务端渲染框架,可以帮助你快速构建服务端渲染的应用。 4. Quasar:这是一个基于 Vue.js 的跨平台框架,可以帮助你使用 Vue.js 开发桌面应用和移动应用。 5. Element UI:这是一个基于 Vue.js 的 UI 组件库,包含了许多常用的 UI 组件,可以帮助你快速构建应用界面。 希望这些信息对你有帮助。 ### 回答2: 以下是我推荐的几个值得尝试的Vue项目: 1. Vue.js官方示例项目Vue官方提供了一系列示例项目,涵盖了从基础到高级的不同主题和用例。这些示例项目可以帮助你更好地理解Vue的使用方法和概念,是学习Vue的很好的资源。 2. Vuetify:Vuetify是一个基于Vue.js的Material Design组件库。它提供了一系列美观且易于使用的UI组件和布局,可以快速构建具有现代设计风格的应用程序。 3. Vuex:Vuex是Vue.js官方推荐的状态管理库,用于管理Vue应用的状态。它提供了一种集中式的状态管理方式,可以帮助开发者更好地组织和管理应用的状态,提高代码的可维护性和可测试性。 4. Vue Router:Vue Router是Vue.js官方推荐的路由管理库,用于构建单页面应用。它可以帮助开发者实现页面之间的切换和导航,并提供了多种路由配置和导航守卫等功能,用于实现复杂的路由需求。 5. Vue CLI:Vue CLI是一个基于Vue.js的快速开发工具,用于初始化、搭建和管理Vue项目。它提供了一个命令行界面和一系列插件,可以帮助开发者自动化地完成项目的搭建、构建和部署等任务。 以上是我个人推荐的几个Vue项目,它们都是经过广泛使用和验证的,具有良好的文档和社区支持。当然,在选择适合自己项目Vue项目时,还需根据实际需求综合考虑多个因素,如项目规模、功能需求、团队技术水平等。 ### 回答3: 在开发Vue项目时,我们可以根据需求和技术要求来选择不同的项目。以下是几个值得推荐的Vue项目: 1. Vue.js官方教程:这是一个非常好的学习Vue.js项目。它提供了一个完整的示例应用程序,涵盖了Vue.js的各个方面,包括组件、路由、状态管理等。通过学习和实践这个项目,可以快速掌握Vue.js的基本概念和用法。 2. Vue Element Admin:这是一个功能强大的后台管理系统模板。它基于Vue.js和Element UI构建,提供了丰富的组件和布局,可以快速搭建一个现代化的后台管理系统。它还支持路由权限控制、多语言切换等高级功能,非常适合开发企业级应用程序。 3. VueShop:这是一个完整的电子商务平台项目。它使用了Vue.jsVuex构建前端,Node.js和Express构建后端。该项目涵盖了商品展示、购物车、订单管理等功能,通过参与开发和实践这个项目,可以深入了解并运用Vue.js和相关技术开发复杂的应用程序。 4. VueMusic:这是一个音乐播放器项目。它使用了Vue.jsVue Router构建前端,通过与第三方音乐API的交互,可以实现音乐的搜索、播放、歌词显示等功能。这个项目对于理解Vue.js的组件化开发、异步请求和响应处理等方面非常有帮助。 总结来说,以上推荐的Vue项目覆盖了不同领域和应用场景,适合不同层次的开发者学习和实践。无论是入门学习还是项目开发,都可以通过参与以上项目来提高自己的Vue.js技能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值