VUE搭建手機(jī)商城心得和遇到的坑
從github上看了一下第一次提交時(shí)間是2018年10月22號。到現(xiàn)在將近4個(gè)月時(shí)間,總算是一點(diǎn)一滴的自己一個(gè)人完成了這個(gè)使用vue做的商城項(xiàng)目。以前看到別人做的這種項(xiàng)目就很羨慕,想著自己也做一個(gè),曾經(jīng)的憧憬如今總算實(shí)現(xiàn)了。一路做過來踩了不少坑,這篇文章就是分享我遇到的這些坑,希望前人爬坑,后人避免。
項(xiàng)目訪問地址xuyuechao.top
vue單頁模式需要注意的坑
1.class樣式?jīng)_突問題
由于是單頁面應(yīng)用。你在每個(gè)組件里面寫入的樣式最終都會作用到全局里面去,導(dǎo)致樣式?jīng)_突問題。而每個(gè)組件都必須提供一個(gè)包裹性質(zhì)的元素,建議這個(gè)元素設(shè)置一個(gè)單獨(dú)的class用于包裹里面的其他class從而避免樣式?jīng)_突
2.靜態(tài)資源倆種處理方式需要理解到位
這個(gè)在Vue官方文檔上有詳細(xì)的說明,但是我一開始沒有理解到位。走了一些個(gè)彎路。這里對Vue官方的內(nèi)容提煉一個(gè)重點(diǎn):
1.public中的內(nèi)容必須用絕對路徑引入也就是以'/'開頭。否則將會被認(rèn)為是一個(gè)模塊引用會被webpack處理。注意:項(xiàng)目如果不是放在根域名下需要如下處理:
<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'>
第一種方式用到的@代表的是別名的值
第二種方式用到的~其后的任何內(nèi)容都會作為模塊請求被解析。官方說可以引用Node模塊中的資源,這個(gè)我還沒用過。等以后用過了有更深的見解會再來補(bǔ)充
第三種方式就是標(biāo)準(zhǔn)的相對路徑引入方式
注意千萬不要用下面這種相對路徑引入方式,因?yàn)樗粫粀ebpack處理。而是直接采用的相對路徑尋找文件。而當(dāng)下的目錄是會被處理的。這種方式一用一個(gè)錯(cuò)
<img src='MrXu.jpg'>
我的建議是盡可能采用相對路徑引入。減少@的使用。因?yàn)槲医?jīng)過測試發(fā)現(xiàn)css和js文件是不支持@的使用的。
項(xiàng)目中對vue屬性的巧妙運(yùn)用
1.使用computed監(jiān)聽購物車內(nèi)容的修改
購物車算是整個(gè)項(xiàng)目中比較復(fù)雜的地方之一了,刪除,添加,選中,取消選中。這些個(gè)操作都會對總金額的計(jì)算產(chǎn)生影響,所以我用computed監(jiān)聽這些變化完成了總金額的計(jì)算以及全選按鈕的變化
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完成了對訂單狀態(tài)的顯示
項(xiàng)目中訂單的狀態(tài)多大7種,剛開始在html里面使用了三目運(yùn)算符做的判斷顯示,顯示效果極差,而且維護(hù)困難。但是采用filter不僅漂亮的多,后期的維護(hù)以及擴(kuò)展都一幕了然
filters: { statusToText(value) { let reValue; switch (value) { case 1: reValue = "代付款"; break; case 2: reValue = "代發(fā)貨"; break; case 3: reValue = "待收貨"; break; case 4: reValue = "已完成"; break; case 5: reValue = "已取消"; break; case 6: reValue = "售后處理"; break; } return reValue; } }
感言
做完這個(gè)項(xiàng)目收獲真的蠻頗多的,像route的母子路由,路由懶加載,別名設(shè)置,路由攔截,vuex中actions,mutations,state的區(qū)別,vue的生命周期,父子組件傳值,watch,computed等等。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
element-ui樹形控件后臺返回的數(shù)據(jù)+生成組織樹的工具類
這篇文章主要介紹了element-ui樹形控件后臺返回的數(shù)據(jù)+生成組織樹的工具類,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03vue使用html2canvas和jspdf將html轉(zhuǎn)成pdf
在前端開發(fā)中, html轉(zhuǎn)pdf是最常見的需求,下面這篇文章主要給大家介紹了關(guān)于vue如何使用html2canvas和jspdf將html轉(zhuǎn)成pdf的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03詳解iview的checkbox多選框全選時(shí)校驗(yàn)問題
這篇文章主要介紹了詳解iview的checkbox多選框全選時(shí)校驗(yàn)問題,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06使用Vue+MySQL實(shí)現(xiàn)登錄注冊的實(shí)戰(zhàn)案例
第一次用Vue+MySQL實(shí)現(xiàn)注冊登錄功能,就已經(jīng)踩了很多坑,下面這篇文章主要給大家介紹了關(guān)于使用Vue+MySQL實(shí)現(xiàn)登錄注冊案例的相關(guān)資料,需要的朋友可以參考下2022-05-05Vue CLI3移動端適配(px2rem或postcss-plugin-px2rem)
這篇文章主要介紹了Vue CLI3移動端適配(px2rem或postcss-plugin-px2rem),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04vue2.0實(shí)現(xiàn)點(diǎn)擊其他區(qū)域關(guān)閉自定義div功能
這篇文章主要介紹了vue2.0實(shí)現(xiàn)點(diǎn)擊其他區(qū)域關(guān)閉自定義div功能實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06vuex中store存儲store.commit和store.dispatch的區(qū)別及說明
這篇文章主要介紹了vuex中store存儲store.commit和store.dispatch的區(qū)別及說明,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09100行代碼實(shí)現(xiàn)一個(gè)vue分頁組功能
今天用vue來實(shí)現(xiàn)一個(gè)分頁組件,總體來說,vue實(shí)現(xiàn)比較簡單,樣式部分模仿了elementUI。接下來本文通過實(shí)例代碼給大家介紹100行代碼實(shí)現(xiàn)一個(gè)vue分頁組功能,感興趣的朋友跟隨小編一起看看吧2018-11-11