日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > vue >内容正文

vue

vue电商项目(一)——项目搭建

發(fā)布時間:2024/3/24 vue 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vue电商项目(一)——项目搭建 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

目錄

一、項目初始化

1、腳手架目錄介紹

2、項目的其他配置

?(1)項目運行的時候,讓瀏覽器自動打開

(2)關(guān)閉語法檢查工具

(3)src文件夾的簡寫形式,配置別名,方便以后訪問。

?二、項目路由搭建

1、項目路由分析

(1)Vue-router路由介紹

(2)組件分析

2、開發(fā)項目步驟

3、非路由組件的搭建

4、路由組件的搭建

(1)安裝路由器

?(2)引入路由組件

(3)路由重定向

(4)路由跳轉(zhuǎn)

三、Footer組件的顯示與隱藏

四、 路由傳參

1、路由跳轉(zhuǎn)的兩種方式

2、路由傳參,參數(shù)有幾種書寫方式

3、路由傳參面試題

五、解決NavigatioDuplicated警告


一、項目初始化

使用腳手架創(chuàng)建項目,安裝腳手架npm install -g @vue/cli, 創(chuàng)建項目vue crete app,

我起名為app。

1、腳手架目錄介紹

node_modules文件夾:放置項目的依賴public文件夾:一般放置的是靜態(tài)資源(圖片),需要注意:放在public文件夾中的靜態(tài)資源,webpack進行打包的時候,會原封不動打包到dist文件夾中,不會當做一個模塊打包到 JS 里面src文件夾(程序員源代碼文件夾):? —assets文件夾:一般放置的是靜態(tài)資源(一般放置多個組件公用的的靜態(tài)資源),需要注意:放置在assets文件夾里面的資源,webpack打包的時候,會把靜態(tài)資源當做一個模塊,打包到JS文件里面(靜態(tài)資源直接使用)? —components文件夾:一般放置的是非路由組件(全局組件)? —App.vue :唯一的根組件,Vue當中的組件都是(.vue)? —main.js:程序的入口文件,也是整個程序當中最先執(zhí)行的文件babel.config.js:配置文件,與babel相關(guān)package.json文件:記錄著項目信息,叫什么…有哪些依賴…項目怎么運行…package-lock.json:緩存性文件README.md:說明性文件

2、項目的其他配置

?(1)項目運行的時候,讓瀏覽器自動打開

找到package.json文件夾,在”script”進行如下修改

"scripts": {"serve": "vue-cli-service serve --open","build": "vue-cli-service build","lint": "vue-cli-service lint"},

(2)關(guān)閉語法檢查工具

找到vue.config文件夾,書寫一下代碼

? //關(guān)閉eslint(語法檢查工具)lintOnSave:false

(3)src文件夾的簡寫形式,配置別名,方便以后訪問。

在jsonfig.json文件夾下做如下配置即可。

【但是’@’不能在”node-modules”,”dist”中使用】

?二、項目路由搭建

1、項目路由分析

(1)Vue-router路由介紹

前端路由:KV鍵值對

Key:URL(地址欄路徑)

Value:相應(yīng)的路由組件

這次的項目是上中下結(jié)構(gòu)

(2)組件分析

路由組件

Home首頁路由組件、Search路由組件、Refister注冊路由

非路由組件

Header、Footer【首頁、搜索頁】,但是在登錄頁沒有

2、開發(fā)項目步驟

(1)書寫靜態(tài)頁面(HTML + CSS)

(2)拆分組件

(3)獲取服務(wù)器組件進行相應(yīng)展示

(4)完成動態(tài)邏輯

注意1:創(chuàng)建組件:組件結(jié)構(gòu) + 組件樣式 + 圖片資源

注意2:項目采用less樣式,瀏覽器不識別less樣式,需要將less變化成css樣式才可以處理,需要通過less、less-loader【安裝6版本進行處理】, npm i less-loader@6,想要組件識別樣式,需要在style上加上lang=less

注意3:引入清除默認樣式,將默認樣式文件放在public文件夾內(nèi),在index.html里引入。?<link rel="stylesheet" href="<./css/reset.css">

3、非路由組件的搭建

非路由組件一般放在components文件夾下,本項目非路由組件有Header和Footer

步驟:創(chuàng)建或定義組件、引入組件、注冊組件、使用組件

4、路由組件的搭建

(1)安裝路由器

Vue2安裝vue-router,命令:npm i vue-router@3

Vue3安裝vue-router,命令:npm i vue-router??

路由組件有四個:Home,Search,Login,Register(注冊)

components文件夾:經(jīng)常放置 非路由組件 (公用全局組件)

pages|views文件夾:經(jīng)常放置 路由組件

?

?(2)引入路由組件

(3)路由重定向

讓項目在跑起來的時候自動定位到某個路由組件的,在src/router/router.js做如下配置

(4)路由跳轉(zhuǎn)

聲明式導(dǎo)航router-link,【to屬性決定了跳轉(zhuǎn)到路由】

編程式導(dǎo)航push|replace

編程式導(dǎo)航:聲明式導(dǎo)航能做的編程式導(dǎo)航都能做,

但是編程式導(dǎo)航除了可以進行路由跳轉(zhuǎn),還可以處理一些業(yè)務(wù)邏輯。

三、Footer組件的顯示與隱藏

Footer組件:在Home、Search顯示,但是在注冊和登錄的時候隱藏

實現(xiàn)方法:v-if|v-show

我們可以根據(jù)組件身上的$route獲取當前路由的信息,通過路由組件的路徑判斷進行顯示或者隱藏,但是如果路由組件太多,則過于麻煩

這里我們通過路由元信息進行實現(xiàn),

這時候在App.vue組件中使用Footer組件中進行判斷即可

<Footer v-show="$route.meta.show"></Footer>

四、 路由傳參

1、路由跳轉(zhuǎn)的兩種方式

聲明式導(dǎo)航:router-link(務(wù)必要有to屬性)

編程式導(dǎo)航:利用的是組件實例的$router.push | replace 方法

2、路由傳參,參數(shù)有幾種書寫方式

parmars參數(shù):屬于路徑當中的一部分,需要注意,在配置路由的時候,【需要占位】

query參數(shù):不屬于路徑當中的一部分,類似于ajax中的queryString /home?k=v&k=v,不需要占位

? ? goSearch(){//路由傳參// 1、字符串形式// this.$router.push('/search/' + this.keyword + "?k=" + "我笑了")// 2、模板字符串// ?this.$router.push(`/search/${this.keyword}?k=我笑了`)// 3、對象寫法,需要在跳轉(zhuǎn)的路由中配置name屬性this.$router.push({name:'search',params:{keyword:this.keyword},query:{k:'我笑了'}})}

3、路由傳參面試題

(1)路由傳遞參數(shù)(對象寫法) path是否可以結(jié)合params參數(shù)一起使用?

答:不可以。路由跳轉(zhuǎn)傳參的時候,對象的寫法可以是name,path的形式,但需要注意的是,path這種寫法不能與params參數(shù)一起使用,即不能直接在路徑中+參數(shù)。

(2)如何指定params參數(shù)可傳可不傳?
在配置路由的時候,給params占位 的后面加上?,代表可傳遞也可以不傳遞

(3)params參數(shù)可傳遞也可以不傳遞,但是如果傳遞是空串,如何解決?
若有占位符也有問號,但傳遞的是空串的話,路徑也會有問題(和上面路徑問題一樣,search直接沒了)

使用undefined解決:params參數(shù)可傳遞不可傳遞的時候,傳遞是空串路徑有問題的錯誤

?params:{//如果沒有params參數(shù)是空字符串,那就傳遞undefined,即什么都傳keyword:this.keyword || undefined},

(4)路由組件能不能傳遞props數(shù)據(jù)?
可以的,直接在路由中配置props:{a:1,b:2},有三種寫法:對象式,布爾值,函數(shù)式

五、解決NavigatioDuplicated警告

編程式路由跳轉(zhuǎn)到當前路由(參數(shù)不變),多次執(zhí)行會拋出NavigatioDuplicated的警告錯誤

警告原因:“vue-router”: “^3.6.4”:最新的vue-router引入promise,push返回的是promise,promise有兩個形參,成功返回的函數(shù)和失敗返回的函數(shù)

解決方法:我直接在后面加上catch(),解決失敗回調(diào)問題,但是這種書寫方式下次跳轉(zhuǎn)還需要書寫,所以通過重寫push方法解決

// 以下代碼在src/router/index.js文件中//重寫push和replace解決重復(fù)點擊報錯的問題 //先把VueRouter原型對象的push和replace,先保存一份 let originPush = VueRouter.prototype.push let originReplace = VueRouter.prototype.Replace //重寫push|replace方法 //第一個參數(shù):告訴原來push方法,往哪里跳轉(zhuǎn)(傳遞哪種參數(shù)) //第一個參數(shù):成功的回調(diào) //第三個參數(shù):失敗的回調(diào) VueRouter.prototype.push = function(location,resolve,reject){if(resolve && reject){//call||apply:相同點:都可以調(diào)用函數(shù)一次,都可以篡改函數(shù)的上下文一次//不同點:call與apply傳遞參數(shù):call傳遞參數(shù)多個參數(shù)用逗號隔開,而apply方法執(zhí)行要傳遞數(shù)組//調(diào)用originPush,把this指向push的調(diào)用者originPush.call(this,location,resolve,reject)}else{originPush.call(this,location,()=>{},()=>{})} } //第一個參數(shù):告訴原來replace方法,往哪里跳轉(zhuǎn)(傳遞哪種參數(shù)) VueRouter.prototype.replace = function(location,resolve,reject){if(resolve && reject){originReplace.call(this,location,resolve,reject)}else{originReplace.call(this,location,()=>{},()=>{})} }

總結(jié)

以上是生活随笔為你收集整理的vue电商项目(一)——项目搭建的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。