实战演示VUE搭建手机商城

作者: a333661d6d6e | 来源:发表于2019-04-30 17:43 被阅读18次

    vue单页模式需要注意的坑

    1.class样式冲突问题

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

    方法二: 在style标签里加入scoped属性,在修改公共组件的样式会变得异常麻烦。

    <style scoped></style>
    

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

    这个在Vue官方文档上有详细的说明,但是我一开始没有理解到位。走了一些个弯路。这里对Vue官方的内容提炼一个重点:

    1.public中的内容必须用绝对路径引入也就是以'/'开头。否则将会被认为是一个模块引用会被webpack处理。注意:项目如果不是放在根域名下需要如下处理:

    <template>
        <img src=`${publicPath}MrXu.jpg`>
    </template>
    <script>
    export default {
        data() {
            return {
                publicPath: process.env.BASE_URL
            }
        }   
    }
    </script>[图片上传中...(image.png-adcfe1-1556546279844-0)]
    
    

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

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

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

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

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

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

        <img src='MrXu.jpg'>
    

    我的建议是尽可能采用相对路径引入。减少@的使用。

    项目中对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;
    //在此我向大家推荐一个前端全栈开发交流圈:582735936  突破技术瓶颈,提升思维能力
          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;
            ... ...
          }
          return reValue;
        }
      }
    

    针对这个功能另外一个实现方式,我觉得也不错。在这里分享一下:

    filters: {
        statusToText(value) {
          let reValue=new Map()
          reValue.set(1,'代付款')
          reValue.set(2,'代发货')
          ... ...
          return reValue.get(value);
        }
     }
    

    结语

    感谢您的观看,如有不足之处,欢迎批评指正。
    获取资料👈👈👈
    本次给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
    对web开发技术感兴趣的同学,欢迎加入Q群:👉👉👉582735936 👈👈👈,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
    最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

    相关文章

      网友评论

        本文标题:实战演示VUE搭建手机商城

        本文链接:https://www.haomeiwen.com/subject/pfxunqtx.html