VUE搭建手机商城心得和遇到的坑


Posted in Javascript onFebruary 21, 2019

从github上看了一下第一次提交时间是2018年10月22号。到现在将近4个月时间,总算是一点一滴的自己一个人完成了这个使用vue做的商城项目。以前看到别人做的这种项目就很羡慕,想着自己也做一个,曾经的憧憬如今总算实现了。一路做过来踩了不少坑,这篇文章就是分享我遇到的这些坑,希望前人爬坑,后人避免。

项目访问地址xuyuechao.top

vue单页模式需要注意的坑

1.class样式冲突问题

由于是单页面应用。你在每个组件里面写入的样式最终都会作用到全局里面去,导致样式冲突问题。而每个组件都必须提供一个包裹性质的元素,建议这个元素设置一个单独的class用于包裹里面的其他class从而避免样式冲突

2.静态资源俩种处理方式需要理解到位

这个在Vue官方文档上有详细的说明,但是我一开始没有理解到位。走了一些个弯路。这里对Vue官方的内容提炼一个重点:
1.public中的内容必须用绝对路径引入也就是以'/'开头。否则将会被认为是一个模块引用会被webpack处理。注意:项目如果不是放在根域名下需要如下处理:

<template>
  <img src=`${publicPath}MrXu.jpg`>
</template>
<script>
export default {
  data() {
    return {
      publicPath: process.env.BASE_URL
    }
  }  
}
</script>

2.采用相对路径引入,方式多样,如:

1.<img src='@/MrXu.jpg'>
2.<img src='~MrXu.jpg'>
3.<img src='./MrXu.jpg'>

第一种方式用到的@代表的是别名的值

第二种方式用到的~其后的任何内容都会作为模块请求被解析。官方说可以引用Node模块中的资源,这个我还没用过。等以后用过了有更深的见解会再来补充

第三种方式就是标准的相对路径引入方式

注意千万不要用下面这种相对路径引入方式,因为他不会被webpack处理。而是直接采用的相对路径寻找文件。而当下的目录是会被处理的。这种方式一用一个错

<img src='MrXu.jpg'>

我的建议是尽可能采用相对路径引入。减少@的使用。因为我经过测试发现css和js文件是不支持@的使用的。

项目中对vue属性的巧妙运用

1.使用computed监听购物车内容的修改

购物车算是整个项目中比较复杂的地方之一了,删除,添加,选中,取消选中。这些个操作都会对总金额的计算产生影响,所以我用computed监听这些变化完成了总金额的计算以及全选按钮的变化

computed: {
  totalPrice() {
   var total = 0;
   this.shops.map(value => {
    if (value.check) total += value.num * value.price;
   });
   return total;
  },
  isAllCheck() {
   var newLength = this.shops.filter(value => {
    return value.check;
   }).length;

   return newLength === this.shops.length ? true : false;
  }
 }

2.使用filter完成了对订单状态的显示

项目中订单的状态多大7种,刚开始在html里面使用了三目运算符做的判断显示,显示效果极差,而且维护困难。但是采用filter不仅漂亮的多,后期的维护以及扩展都一幕了然

filters: {
  statusToText(value) {
   let reValue;
   switch (value) {
    case 1:
     reValue = "代付款";
     break;
    case 2:
     reValue = "代发货";
     break;
    case 3:
     reValue = "待收货";
     break;
    case 4:
     reValue = "已完成";
     break;
    case 5:
     reValue = "已取消";
     break;
    case 6:
     reValue = "售后处理";
     break;
   }
   return reValue;
  }
 }

感言

做完这个项目收获真的蛮颇多的,像route的母子路由,路由懒加载,别名设置,路由拦截,vuex中actions,mutations,state的区别,vue的生命周期,父子组件传值,watch,computed等等。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
模仿JQuery sortable效果 代码有错但值得看看
Nov 05 Javascript
document.all的一个比较完整的总结及案例
Jan 31 Javascript
基于JavaScript自定义构造函数的详解说明
Apr 24 Javascript
JS实现禁止鼠标右键的功能
Oct 15 Javascript
JS正则表达式修饰符中multiline(/m)用法分析
Dec 27 Javascript
Bootstrap警告(Alerts)的实现方法
Mar 22 Javascript
react实现一个优雅的图片占位模块组件详解
Oct 30 Javascript
详解Vue单元测试Karma+Mocha学习笔记
Jan 31 Javascript
原生JS forEach()和map()遍历的区别、兼容写法及jQuery $.each、$.map遍历操作
Feb 27 jQuery
小程序中this.setData的使用和注意事项
Aug 28 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
vue实现两个区域滚动条同步滚动
Dec 13 Vue.js
利用vue重构有赞商城的思路以及总结整理
Feb 21 #Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
Feb 21 #Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
Feb 21 #Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
Feb 21 #Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
Feb 21 #Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
Feb 21 #Javascript
Vue实现table上下移动功能示例
Feb 21 #Javascript
You might like
基于php下载文件的详解
2013/06/02 PHP
使用phpQuery采集网页的方法
2013/11/13 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
yii2.0框架场景的简单使用示例
2020/01/25 PHP
jquery ui resizable bug解决方法
2010/10/26 Javascript
Javascript简单改变表单元素背景的方法
2015/07/15 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
小程序获取当前位置加搜索附近热门小区及商区的方法
2019/04/08 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
JavaScript 中的执行上下文和执行栈实例讲解
2021/02/25 Javascript
Python urllib模块urlopen()与urlretrieve()详解
2013/11/01 Python
python快速排序代码实例
2013/11/21 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
python使用tkinter实现简单计算器
2018/01/30 Python
Python中pandas模块DataFrame创建方法示例
2018/06/20 Python
Python全排列操作实例分析
2018/07/24 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
TFRecord格式存储数据与队列读取实例
2020/01/21 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
Django如何继承AbstractUser扩展字段
2020/11/27 Python
基于css3的属性transition制作菜单导航效果
2015/09/01 HTML / CSS
英国最大的在线奢侈手表零售商:Jura Watches
2018/01/29 全球购物
法国滑雪假期的专家:Ski Planet
2019/11/02 全球购物
区域总监的岗位职责
2013/11/21 职场文书
中学生演讲稿
2014/04/26 职场文书
司法助理专业自荐书
2014/06/13 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
北京青年观后感
2015/06/15 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
「月刊Action」2022年5月号封面公开
2022/03/21 日漫
SpringBoot中使用Redis作为全局锁示例过程
2022/03/24 Java/Android