vue.js打包之后可能會(huì)遇到的坑!
前言
最近在用webpack+vue寫(xiě)項(xiàng)目,經(jīng)過(guò)幾天的熬夜加班改BUG,終于把基本的框架給寫(xiě)完了,后面只要加一些小功能就可以了,太好吧!先來(lái)npm run build 打包出來(lái)看看吧!
打包中...,我們用本地服務(wù)器打開(kāi)看一下。
額,不看不知道,一看嚇一跳,坑咋這么多呢!但是作為一名積極向上的IT從業(yè)者,填坑吧。
1.打包之后沒(méi)有被渲染出來(lái)
怎么回事,剛打開(kāi)就告訴我啥也沒(méi)有,這是要搞事情的前奏?。?,我們看一下錯(cuò)誤信息,告訴我路徑有問(wèn)題,默默的看一下自己的地址欄和自己的文件所在目錄,原來(lái)是我的打包文件沒(méi)有放到根目錄下,這個(gè)時(shí)候我們可以把我們的兩個(gè)文件放到根目錄下,但是作為一名有個(gè)性的IT人士,當(dāng)然要看有沒(méi)有其他方法。從上面的路徑中隱隱約約有點(diǎn)預(yù)感,static是直接相對(duì)于根目錄,說(shuō)明這有可能打包的時(shí)候,有可能設(shè)置了絕對(duì)路徑,如果我改成相對(duì)路徑,那不就可以了嗎。
我們?nèi)タ匆幌马?xiàng)目文件下的config>index.js找到里面的build下的assetsPublicPath:'/',把它改成assetsPublicPath:'./',加個(gè)小點(diǎn)表示相對(duì)路徑,不加表示絕對(duì)路徑。npm run build運(yùn)行。成功。
2.路由(router)mode:'history',導(dǎo)致頁(yè)面不能渲染問(wèn)題
地址欄的那個(gè)#怎么那么讓我不舒服呢!對(duì)于有輕度強(qiáng)迫癥的我來(lái)說(shuō),這是不能忍不了的。
我們?cè)陧?xiàng)目打包前,開(kāi)發(fā)項(xiàng)目時(shí)(npm start),在vueRouter里設(shè)置mode:"history".可以去掉#號(hào)。
這里強(qiáng)行解釋一番:
路由(router)默認(rèn) hash 模式,使用 URL 的 hash 來(lái)模擬一個(gè)完整的 URL,于是當(dāng) URL 改變時(shí),頁(yè)面不會(huì)重新加載,因?yàn)閷?duì)于正常的頁(yè)面來(lái)說(shuō),更換URl一定是會(huì)導(dǎo)致頁(yè)面的更換的, 而只有更換URL中的查詢字符串和hash值的時(shí)候才不會(huì)重新加載頁(yè)面。
路由(router)的history模式,這種模式充分利用了history.pushState API來(lái)完成URL的跳轉(zhuǎn)而不需要重新加載頁(yè)面。沒(méi)有#號(hào)。
npm run build打包中....
什么鬼,為什么我的路由(router)部分沒(méi)有被渲染出來(lái),這就是history的坑了,解決方法一,會(huì)到以前的hash模式;解決方法二,設(shè)置routes里的路由name。
這是因?yàn)槁酚桑╮outer)無(wú)法找到路徑中的組件,所以也就無(wú)法渲染了。只需要修改 src > router > index.js,在每個(gè)path后加上組件名稱(chēng)就行了,這樣就可以了。
這里有個(gè)小問(wèn)題:
為了我們的時(shí)間考慮,還是放到根目錄吧!
首頁(yè)沒(méi)有問(wèn)題了,逐個(gè)鏈接測(cè)試一下。
這是什么鬼,路徑和其他圖片路徑一樣,圖片也存在啊,為啥你就是這么傲嬌,就是報(bào)錯(cuò)。來(lái)看一下控制臺(tái)。
結(jié)合之前的./原來(lái)是相對(duì)路徑問(wèn)題,是我的開(kāi)發(fā)文件assets下多個(gè)圖片文件夾。
這個(gè)時(shí)候?yàn)榱碎_(kāi)發(fā)項(xiàng)目的可讀性和維護(hù)性。只能默默的把前面改的相對(duì)路徑'./'改回絕對(duì)路徑'/'了。這就尷尬了,額額額,大家就當(dāng)沒(méi)看到哈!
暫時(shí)遇到這些坑,這是自己寫(xiě)項(xiàng)目的有感而發(fā),希望對(duì)看過(guò)這篇文章的人有所幫助。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Vue.js中用webpack合并打包多個(gè)組件并實(shí)現(xiàn)按需加載
- 詳解如何使用webpack打包Vue工程
- vue打包后顯示空白正確處理方法
- Vue項(xiàng)目webpack打包部署到服務(wù)器的實(shí)例詳解
- Vue 中批量下載文件并打包的示例代碼
- Parcel.js + Vue 2.x 極速零配置打包體驗(yàn)教程
- 關(guān)于Vue背景圖打包之后訪問(wèn)路徑錯(cuò)誤問(wèn)題的解決
- vue 打包后的文件部署到express服務(wù)器上的方法
- 詳解vue靜態(tài)資源打包中的坑與解決方案
- Vue打包后出現(xiàn)一些map文件的解決方法
相關(guān)文章
Vue+Node.js+WebSocket實(shí)現(xiàn)即時(shí)通訊
本文主要介紹了Vue+Node.js+WebSocket實(shí)現(xiàn)即時(shí)通訊,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05vue3使用拖拽組件draggable.next的保姆級(jí)教程
做項(xiàng)目的時(shí)候遇到了一個(gè)需求,拖拽按鈕到指定位置,添加一個(gè)輸入框,這篇文章主要給大家介紹了關(guān)于vue3使用拖拽組件draggable.next的保姆級(jí)教程,需要的朋友可以參考下2023-06-06解決vue路由組件vue-router實(shí)例被復(fù)用問(wèn)題
這篇文章介紹了解決vue路由組件vue-router實(shí)例被復(fù)用的問(wèn)題,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06vue工程師必會(huì)封裝的埋點(diǎn)指令思路知識(shí)總結(jié)
這篇文章主要給大家總結(jié)介紹了關(guān)于vue工程師必會(huì)封裝的埋點(diǎn)指令思路知識(shí),文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2021-12-12Vue實(shí)現(xiàn)回到頂部和底部動(dòng)畫(huà)效果
這篇文章主要為大家詳細(xì)介紹了Vue實(shí)現(xiàn)回到頂部和底部動(dòng)畫(huà)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-07-07vue實(shí)現(xiàn)在頁(yè)面上添加水印的示例代碼
這篇文章主要給大家介紹一下vue實(shí)現(xiàn)在頁(yè)面上添加水印的實(shí)例,文中有詳細(xì)的代碼示例供大家參考,具有一定的參考價(jià)值,感興趣的小伙伴跟著小編一起來(lái)看看吧2023-12-12vue項(xiàng)目中定時(shí)器無(wú)法清除的原因解決
頁(yè)面有定時(shí)器,并且定時(shí)器在離開(kāi)頁(yè)面時(shí),有清除,本文主要介紹了vue項(xiàng)目中定時(shí)器無(wú)法清除的原因解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02