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 相关文章推荐
javascript编程起步(第一课)
Jan 10 Javascript
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
Nov 03 Javascript
escape、encodeURI 和 encodeURIComponent 的区别
Mar 02 Javascript
javascript中[]和{}对象使用介绍
Mar 20 Javascript
jQuery div层的放大与缩小简单实现代码
Mar 28 Javascript
jQuery判断密码强度实现思路及代码
Apr 24 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
Jan 07 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
Dec 27 Javascript
js省市区级联查询(插件版&amp;无插件版)
Mar 21 Javascript
JQuery EasyUI的一些常用组件
Jul 12 jQuery
vue中v-model动态生成的实例详解
Oct 27 Javascript
微信小程序实现圆形进度条动画
Nov 18 Javascript
利用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中处理模拟rewrite 效果
2006/12/09 PHP
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
PHP include_path设置技巧分享
2011/07/03 PHP
php有道翻译api调用方法实例
2014/12/22 PHP
PHP判断是否连接上网络的方法
2015/07/01 PHP
PHP5.6新增加的可变函数参数用法分析
2017/08/25 PHP
JavaScript入门教程(6) Window窗口对象
2009/01/31 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
JavaScript函数定义的常见注意事项小结
2014/09/16 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
浅谈JavaScript字符串与数组
2015/06/03 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
jQuery的时间datetime控件在AngularJs中的使用实例(分享)
2017/08/17 jQuery
基于AngularJS的简单使用详解
2017/09/10 Javascript
vue结合Echarts实现点击高亮效果的示例
2018/03/17 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
vue实现分页的三种效果
2020/06/23 Javascript
[01:03:00]DOTA2上海特级锦标赛A组败者赛 EHOME VS CDEC第一局
2016/02/25 DOTA
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
Python文件监听工具pyinotify与watchdog实例
2018/10/15 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
python常量折叠基础知识点讲解
2021/02/28 Python
CSS3 3D位移translate效果实例介绍
2016/05/03 HTML / CSS
世界上最大的家庭自动化公司:Smarthome
2017/12/20 全球购物
即时搜索数百万张门票:SeatsForEveryone.com
2018/08/26 全球购物
实习教师自我鉴定
2013/12/12 职场文书
爱国卫生月实施方案
2014/02/21 职场文书
市场总经理岗位职责
2014/04/11 职场文书
医院搬迁方案
2014/06/14 职场文书
六一亲子活动感想
2015/08/07 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
Mysql分库分表之后主键处理的几种方法
2022/02/15 MySQL
MySQL GTID复制的具体使用
2022/05/20 MySQL