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 EasyUI 使用介绍
Apr 01 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
May 06 Javascript
Knockout visible绑定使用方法
Nov 15 Javascript
document.forms[].submit()使用介绍
Feb 19 Javascript
js验证上传图片的方法
May 12 Javascript
JSON字符串和对象之间的转换详解
May 26 Javascript
javascript实现的上下无缝滚动效果
Sep 19 Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
Jan 11 Javascript
JS中正则表达式要注意lastIndex属性
Aug 08 Javascript
Vue2.0设置全局样式(less/sass和css)
Nov 18 Javascript
vue cli构建的项目中请求代理与项目打包问题
Feb 26 Javascript
新手快速入门微信小程序组件库 iView Weapp
Jun 24 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
解析strtr函数的效率问题
2013/06/26 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
Thinkphp连表查询及数据导出方法示例
2016/10/15 PHP
PHP 计算两个特别大的整数实例代码
2018/05/07 PHP
Jquery AJAX 用于计算点击率(统计)
2010/06/30 Javascript
查看图片(前进后退)功能实现js代码
2013/04/24 Javascript
javascript实现10个球随机运动、碰撞实例详解
2015/07/08 Javascript
JS拖拽插件实现步骤
2015/08/03 Javascript
nodejs 的 session 简单使用
2016/06/06 NodeJs
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
vue.js加载新的内容(实例代码)
2017/06/01 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
JS原生瀑布流效果实现
2019/04/26 Javascript
node实现socket链接与GPRS进行通信的方法
2019/05/20 Javascript
jquery实现的分页显示功能示例
2019/08/23 jQuery
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
2019/12/17 Javascript
jquery.validate自定义验证用法实例分析【成功提示与择要提示】
2020/06/06 jQuery
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
用Python进行基础的函数式编程的教程
2015/03/31 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python中如何使用if语句处理列表实例代码
2019/02/24 Python
Python3实现的判断环形链表算法示例
2019/03/07 Python
使用tensorflow DataSet实现高效加载变长文本输入
2020/01/20 Python
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
模具专业毕业生自荐书范文
2014/02/19 职场文书
工程服务质量承诺书
2015/04/29 职场文书
请学会珍惜眼前,因为人生没有下辈子!
2019/11/12 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书
详解MySQL主从复制及读写分离
2021/05/07 MySQL
教你做个可爱的css滑动导航条
2021/06/15 HTML / CSS
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS